android - 自定义 DialogFragment 说我的 EditTexts 为空
问题描述
我肯定在 onCreateDialog() 中做错了什么。侦听器工作正常,我可以传递我传入的主机片段字符串,但是,我收到错误消息,说我的 EditTexts 为空。另外,我在编码方面很新,所以请原谅混乱。
我应该从哪里获得对它们的引用?
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setTitle("Add Exercise");
AlertDialog dialog = builder.create();
final EditText name = (EditText) dialog.findViewById(R.id.ex_name);
final EditText sets = (EditText) dialog.findViewById(R.id.ex_sets);
final EditText reps = (EditText) dialog.findViewById(R.id.ex_reps);
final EditText weight = (EditText) dialog.findViewById(R.id.ex_weight);
builder.setView(inflater.inflate(R.layout.dialog_add_exercise, null))
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User clicked Add button
//listener.onDialogPositiveClick(AddExerciseDialogFragment.this);
listener.getName(name.getText().toString().trim());
listener.getName(name.getText().toString().trim());
listener.getSets(Integer.parseInt(sets.getText().toString().trim()));
listener.getReps(Integer.parseInt(reps.getText().toString().trim()));
listener.getWeight(Double.parseDouble(weight.getText().toString().trim()));
dismiss();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
//listener.onDialogNegativeClick(AddExerciseDialogFragment.this);
dismiss();
}
});
//dialog.show();
return builder.create();
}
解决方案
是的,您的 EditTexts 将始终为空。那是因为您在不包含它们的视图上使用 findViewById。注意这一行:
builder.setView(inflater.inflate(R.layout.dialog_add_exercise, null))
在您已经使用 findViewById 之后,您正在膨胀。这就是问题所在。
首先,获取您的视图根布局:
View view = inflater.inflate(R.layout.dialog_add_exercise, null);
然后,找到您的观点:
EditText editText = view.findViewById(R.id.editText);
最后,在你找到你想要的所有视图之后,使用你的构建器上的主视图根布局。
builder.setView(view)...
推荐阅读
- php - Laravel 通过多列分组获取最新记录
- python - 图像拼接扭曲包裹多张图像
- c# - 如何使用 HttpClient 配置 json 反序列化?
- php - 为什么 WordPress 以不同于常规字符串的方式转换我的帖子标题?
- regex - 如何用python获取字符串中每个字符的位置?
- c# - 如何从 Outlook 中的内联回复或新回复窗口获取原始电子邮件?C#
- ios - 如何从 firebase 数据库中检索特定值并将其分配给 Swift 4 中的特定变量?
- c# - 插入实体框架子项的顺序
- python - 使用 Django 从大型数据库中更快地检索数据
- sparql - 在 wikidata 中按类型过滤属性值