Java DialogFragment中的EditText始终返回空字符串
我已经在我的对话框中实现了表单,当单击肯定按钮时,我将为ma数据库创建新对象。我已经为EditText创建了全局变量,但仍然不起作用。在我想从他们那里得到文本值的地方,我总是得到空字符串 以下是代码:Java DialogFragment中的EditText始终返回空字符串,java,android,android-edittext,android-dialogfragment,Java,Android,Android Edittext,Android Dialogfragment,我已经在我的对话框中实现了表单,当单击肯定按钮时,我将为ma数据库创建新对象。我已经为EditText创建了全局变量,但仍然不起作用。在我想从他们那里得到文本值的地方,我总是得到空字符串 以下是代码: EditText名称,desc @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builde
EditText名称,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();
}
有什么想法吗?在下面的代码中,您正在膨胀新建对话框
布局,您的姓名和描述文本属于此布局
视图=充气机。充气(R.layout.new_对话框,空)
但是,当您设置对话框布局时,您正在设置new\u workout\u dialog
。您的姓名和描述不属于此布局
builder.setView(inflater.inflate(R.layout.new_workout_dialog, null))
此外,即使在设置builders视图时使用了new_对话框
,name和desc仍然是不相关的。因为您正在setView
方法中完全创建一个新视图
按如下方式使用视图变量:
builder.setView(view, null))
我偶然发现了同样的问题。您可以使用onClick提供的getDialog()在对话框中获取视图
((EditText) getDialog().findViewById(R.id.your_editText_ID)).getText().toString()
不,我没有任何例外对不起,没有问题。。。在应用程序中,我有相同的名字。。。这是我在stack网站上编辑的。请阅读我最后的回答。即使是打字错误,您的代码仍然是错误的。您正在setView方法中创建一个新视图。使用您之前创建的视图变量。哦,是的!我错过了这个对不起:)它的工作)谢谢你
((EditText) getDialog().findViewById(R.id.your_editText_ID)).getText().toString()