【问题标题】:Hide keyboard before showing DialogFragment在显示 DialogFragment 之前隐藏键盘
【发布时间】:2013-08-28 16:30:44
【问题描述】:

我有一个用户设置登录名和密码的第一个活动 A。然后他点击“确定”,这样键盘就打开了,他到达了活动 B。在活动 B 的 onCreate 中,我显示了一个 DialogFrament 但键盘仍然打开,直到我隐藏了 DialogFragment。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeolocalisationDialog geoDlg = new GeolocalisationDialog();
    geoDlg.show(getSupportFragmentManager(), "geoDlg");
}

我的问题是如何在显示 DialogFragment 之前隐藏键盘?

ps : 我的 DialogFrament 是一个基本的 DialogFragment

public class GeolocalisationDialog extends DialogFragment {

private static DialogClickListener callback;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        callback = (DialogClickListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement DialogClickListener");
    }
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.authorize_geoloc)
           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    callback.onYesClick();
                }
            })
            .setNegativeButton(R.string.refuse, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    callback.onNoClick();
                }
            });

    return builder.create();
}

}

ps2 : 我曾尝试在清单中设置 android:windowSoftInputMode="stateHidden" 但它不起作用

【问题讨论】:

    标签: android


    【解决方案1】:

    使用以下方法强行隐藏软键盘:

    InputMethodManager imm = (InputMethodManager)getSystemService(
          Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
    // here you may choose the editText where the last time keyboard was opened. 
    

    请参阅How to make the virtual keyboard go away? 了解更多信息。

    【讨论】:

    • 在活动 A 或 B 中?如果我不显示 DialogFragment,我会在新活动启动时自动隐藏键盘
    • 您可以在 OK 按钮 onClick 中执行此操作,如果这似乎会造成问题。我假设它在用户完成输入密码之后。所以在第一个活动中这样做。 yourEditText 可以是密码字段的 EditText。
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2022-11-18
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多