android 关闭活动,关闭/隐藏活动状态onStop上的Android软键盘

我的布局中有一个EditText和一个Button。在编辑字段中写入并单击此按钮到go back my fragment后,我想隐藏虚拟键盘。我假设有一个简单的方法,但我尝试了一些方法,但它不起作用:

该代码显示了Button的工作原理:

private void onButtonClicked(){

getActivity().getSupportFragmentManager().popBackStack();

}

这是一些解决方案的代码,但这无济于事。此代码i使用hideSoftInputFromWindow,但当我调用"edittext.getWindowToken()"时,它不会隐藏软键盘(我还将0值更改为inputmethodmanager.hide_implicit_only或inputmethodmanager.hide_not always且不工作):

EditText myEditText = (EditText) findViewById(R.id.myEditText);

InputMethodManager imm = (InputMethodManager)getSystemService(

Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

有了这个代码,在这个应用程序的另一个屏幕上,它就工作了。这个屏幕是一个活动,所以我认为问题是fragment的问题。

我的片段代码:

public class ChangeEmailFragment extends BaseFragment {

private TextView mTxtCurrentEmail;

private EditText mEdtNewEmail;

private EditText mEdtPassword;

private TextView mTxtSubmit;

@Override

public void onStop() {

super.onStop();

if (progressDialog != null && progressDialog.isShowing())

progressDialog.dismiss();

if (dialog != null && dialog.isShowing())

dialog.dismiss();

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_change_email, container,

false);

mTxtCurrentEmail = (TextView) view.findViewById(R.id.current_email);

mEdtNewEmail = (EditText) view.findViewById(R.id.edit_email);

mEdtPassword = (EditText) view.findViewById(R.id.edit_password);

mTxtSubmit = (TextView) view.findViewById(R.id.button_submmit);

return view;

}

private void showErrorDialog(String msg) {

Builder builder = new Builder(getActivity());

builder.setTitle(getString(R.string.fg_change_email_dialog_error_title));

builder.setMessage(msg);

builder.setNegativeButton(getText(R.string.common_ok), null);

dialog = builder.create();

dialog.show();

}

}

我的活动代码:

@Override

public void onStop() {

super.onStop();

InputMethodManager imm = (InputMethodManager) getSystemService(

Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(mEdtUserName.getWindowToken(), 0);

}

发布你的Fragment代码

这是我的片段代码public static ChangeEmailFragment newInstance() { ChangeEmailFragment changeEmailFragment = new ChangeEmailFragment(); return changeEmailFragment; },因为它太长了,所以我将在下一条评论中发布它。

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_change_email, container, false); mTxtCurrentEmail = (TextView) view.findViewById(R.id.current_email); mEdtNewEmail = (EditText) view.findViewById(R.id.edit_email); mEdtPassword = (EditText) view.findViewById(R.id.edit_password); mTxtSubmit = (TextView) view.findViewById(R.id.button_submmit); return view; }

@我们会在你的问题中发布你的所有代码。这是什么?

我使用的建议是code,但我不能发布我的格式化代码。所以,请教我怎么做。非常感谢。

在这种方式,Fragmenttry

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);

这对我很有用。谢谢您!所以我理解当我的光标放在fragment上时,我必须在fragment中调用hideSoftInputFromWindow,而不是activity。对吗?

@在风中,你是准确的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值