我正在尝试创建一个包含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开发的新手,所以任何帮助都将不胜感激!
我做错了什么?
答案 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"/>