[英]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.