繁体   English   中英

如何在对话框打开时自动打开键盘

[英]How to open keyboard automatically when a dialog opens

我正在尝试使用2个EditText视图创建一个对话框,其中一个将获得焦点并自动打开键盘。 但是,我似乎无法让它发挥作用。 下面显示了我的代码:

public class ItemDetailsDialogFragment extends DialogFragment {
public ItemDetailsDialogFragment() {
    // Required empty public constructor
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Using the builder class for convenient dialog construction
    AlertDialog.Builder detailsInput = new AlertDialog.Builder(getActivity());

    // Get the layout inflater
    LayoutInflater inflater = getActivity().getLayoutInflater();

    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    detailsInput.setView(inflater.inflate(R.layout.fragment_add_item_details, null))
    // Add action buttons
        .setPositiveButton(R.string.details_ok_button, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                // TODO
                // Save the details into a map
            }
        })
        .setNegativeButton(R.string.details_cancel_button, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                ItemDetailsDialogFragment.this.getDialog().cancel();
            }
        });
    return detailsInput.create();
}

这是我的xml文件:

<EditText
    style="@style/details_text"
    android:id="@+id/details_desc_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<EditText
    style="@style/details_text"
    android:id="@+id/details_price_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"/>

如果我尝试在以下位置添加以下代码: detailsInput.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

我收到一个错误说明

无法解析getWindow()方法

我也试过使用这个建议 ,它的确有效。 但是,每次我需要该对话框时,我都不想重写整个代码块。 相反,我正在尝试创建一个类,以便我可以使用该类创建一个对象。 我是Android开发的新手,所以任何帮助将不胜感激!

我究竟做错了什么?

如果您只想关注一个EditText,可以通过两种方式实现:

  • 调用mEditText.requestFocus(); onCreate方法中
  • 在布局文件中添加<requestFocus />

例如,如果您想要专注于您的第一个EditText(并且键盘自动打开),您的xml应该是这样的:

<EditText
    style="@style/details_text"
    android:id="@+id/details_desc_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <requestFocus />    <!-- here's the trick -->
</EditText>

<EditText
    style="@style/details_text"
    android:id="@+id/details_price_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM