我正在创建一个用于登录对话框的DialogFragment。我希望自动完成用作用户ID的电子邮件地址。我找到了一个很好的教程here,但它并没有真正处理使用DialogFragment。
我目前的代码是:
DialogFragment dialog = new LoginDialogFragment();
AutoCompleteTextView emailLoginId = (AutoCompleteTextView) findViewById(R.id.login_user_id);
if (null == emailLoginId) {
Log.d(tag, "EmailLoginId is null!");
}
// get list of drivers
ArrayAdapter<String> driverList = dbHelper.getAllDriverEmailStringAdapter();
Log.d(tag, "Driver List size is " + driverList.getCount());
emailLoginId.setAdapter(driverList);
dialog.show(getSupportFragmentManager(), "LoginDialogFragment");
如您所见,我正在创建对话框,然后附加名称列表。不幸的是,这给了我一行空指针异常:
emailLoginId.setAdapter(driverList);
我相信这对我来说可能是一些令人尴尬的简单疏忽,但如果它让我前进的话,那没关系。
我在LoginDialogFragment的onStart()和onCreateView()部分尝试了相同的代码并进行了适当的修改。在所有情况下,它都找不到字段,登录ID字段或密码字段。
在onStart()和onCreateView()例程中调用时,我使用了:
AutoCompleteTextView emailLoginId = (AutoCompleteTextView) getActivity().findViewById(R.id.login);
这是错的吗?
我可以计算出可能导致该问题的唯一的另一件事是不实际直到dialog.show(getSupportFragmentManager(),“LoginDialogFragment”)被称为创建对话框,但不与文档嘲弄并且你仍然认为这至少可以在onStart()例程中起作用。
提前感谢你的时间。