DialogFragment 中的 EditText 总是 return 空字符串
EditText in DialogFragment always return empty string
我在我的对话框中实现了表单,当单击肯定按钮时,我为 ma 数据库创建了新对象。我已经为 EditText 创建了全局变量,但仍然不起作用。我想从他们那里获取文本值的地方我总是得到空字符串。
代码如下:
EditText name, desc;
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
view = inflater.inflate(R.layout.new_dialog, null);
name = (EditText) view.findViewById(R.id.workout_name);
desc = (EditText) view.findViewById(R.id.workout_description);
builder.setView(inflater.inflate(R.layout.new_dialog, null)).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDbHelper helper = new MyDbHelper (getActivity());
MyObj w = new MyObj ();
w.setName(name.getText().toString(););
w.setDescription(desc.getText().toString());
w.setLevel(1);
long id = helper.createWorkout(w);
Toast.makeText(getActivity(), id+"", Toast.LENGTH_LONG).show();
callback.onPositiveButtonClick();
}
}).setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
callback.onNegativeButtonClick();
}
});
return builder.create();
}
有什么想法吗?
在下面的代码中,您正在膨胀 new_dialog
布局,您的名称和 desc EditTexts 属于此布局。
view = inflater.inflate(R.layout.new_dialog, null);
name = (EditText) view.findViewById(R.id.workout_name);
desc = (EditText) view.findViewById(R.id.workout_description);
但是当您设置对话框的布局时,您正在设置 new_workout_dialog
。你的名字和描述不属于这个布局。
builder.setView(inflater.inflate(R.layout.new_workout_dialog, null))
此外,即使您在设置构建器视图时使用了 new_dialog
,name 和 desc 仍然是无关紧要的。因为您完全在 setView
方法中创建了一个新视图。
使用视图变量如下:
builder.setView(view, null))
我偶然发现了同样的问题。您可以使用 onClick 提供的 getDialog() 在对话框中放大视图。
((EditText) getDialog().findViewById(R.id.your_editText_ID)).getText().toString()
我在我的对话框中实现了表单,当单击肯定按钮时,我为 ma 数据库创建了新对象。我已经为 EditText 创建了全局变量,但仍然不起作用。我想从他们那里获取文本值的地方我总是得到空字符串。
代码如下:
EditText name, desc;
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
view = inflater.inflate(R.layout.new_dialog, null);
name = (EditText) view.findViewById(R.id.workout_name);
desc = (EditText) view.findViewById(R.id.workout_description);
builder.setView(inflater.inflate(R.layout.new_dialog, null)).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyDbHelper helper = new MyDbHelper (getActivity());
MyObj w = new MyObj ();
w.setName(name.getText().toString(););
w.setDescription(desc.getText().toString());
w.setLevel(1);
long id = helper.createWorkout(w);
Toast.makeText(getActivity(), id+"", Toast.LENGTH_LONG).show();
callback.onPositiveButtonClick();
}
}).setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
callback.onNegativeButtonClick();
}
});
return builder.create();
}
有什么想法吗?
在下面的代码中,您正在膨胀 new_dialog
布局,您的名称和 desc EditTexts 属于此布局。
view = inflater.inflate(R.layout.new_dialog, null);
name = (EditText) view.findViewById(R.id.workout_name);
desc = (EditText) view.findViewById(R.id.workout_description);
但是当您设置对话框的布局时,您正在设置 new_workout_dialog
。你的名字和描述不属于这个布局。
builder.setView(inflater.inflate(R.layout.new_workout_dialog, null))
此外,即使您在设置构建器视图时使用了 new_dialog
,name 和 desc 仍然是无关紧要的。因为您完全在 setView
方法中创建了一个新视图。
使用视图变量如下:
builder.setView(view, null))
我偶然发现了同样的问题。您可以使用 onClick 提供的 getDialog() 在对话框中放大视图。
((EditText) getDialog().findViewById(R.id.your_editText_ID)).getText().toString()