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

时间:2017-06-10 17:48:52

标签: android

我正在尝试创建一个包含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()方法

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您只想关注一个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"/>
相关问题