[英]EditText setText not displaying on a Dialog Fragment
我是Android应用开发的新手,也不知道如何调试它。 所以我正在尝试在DialogFragment上执行EditText.setText。 它在日志上打印出正确的字符串,但仍显示基于.xml文件的旧字符串(“在此处输入项目”。)。 有什么办法可以更新吗?
public class MyAlertDialogFragment extends DialogFragment{
public MyAlertDialogFragment() {}
public static MyAlertDialogFragment newInstance(String desc) {
MyAlertDialogFragment frag = new MyAlertDialogFragment();
Bundle args = new Bundle();
args.putString("desc", desc);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setView(R.layout.custom_dialog);
alertDialogBuilder.setTitle("Edit to-do list");
final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null);
final EditText mEditText = (EditText) layout.findViewById(R.id.EditDesc);
String desc = getArguments().getString("desc");
mEditText.setText(desc);
System.out.println("EditText is " + mEditText.getText().toString());
alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// on success
EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity();
listener.onFinishEditDialog(mEditText.getText().toString());
}
});
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
}
}
日志文件
07-06 21:04:20.738 4115-4115/com.example.light.todolist I/System.out: EditText is Doing grocery
xml文件是:
<TextView
android:layout_width="238dp"
android:layout_height="wrap_content"
android:text="Edit Item Below:"
android:id="@+id/EditTitle"
android:layout_weight="0.04" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/EditDesc"
android:text="Enter item here.">
<requestFocus />
</EditText>
您不对Dialog使用布局视图,这样就看不到EditText上的文本。 请按此处更改:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setTitle("Edit to-do list");
final View layout = View.inflate(MainActivity.getAppContext(), R.layout.custom_dialog, null);
alertDialogBuilder.setView(layout );
尝试这个:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View customView = inflater.inflate(R.layout.custom_dialog, null);
alertDialogBuilder.setView(customView);
alertDialogBuilder.setTitle("Edit to-do list");
final EditText mEditText = (EditText) customView.findViewById(R.id.EditDesc);
String desc = getArguments().getString("desc");
mEditText.setText(desc);
alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// on success
EditTodoFragment.EditTodoFragmentListener listener = (EditTodoFragment.EditTodoFragmentListener)getActivity();
listener.onFinishEditDialog(mEditText.getText().toString());
}
});
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.