如何让一个对话框内,从文本的EditText [复​​制](how to get text from

2019-10-28 15:57发布

这个问题已经在这里有一个答案:

  • Android的警告对话框无法找到视图 4答案
  • Android的不能在对话获得的EditText的getText()。的toString() 1回答

就像标题说我怎么能得到从文本中的EditText这是一个自定义对话框里面发现了什么?

这是从我的dialogfragment的onCreateDialog方法:

public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor = sharedPref.edit();

    builder.setView(inflater.inflate(R.layout.name_dialog, null))
           .setPositiveButton(R.string.name_ok, new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   EditText nameEditText = (EditText) getActivity().findViewById(R.id.name_text_view);
                   editor.putString(getString(R.string.name_key), nameEditText.getText().toString());
                   editor.commit();
               }
           })
           .setNegativeButton(R.string.name_cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   NameDialogFragment.this.getDialog().cancel();
               }
           });      
    return builder.create();
}

我无法得到它的工作..我写的东西在的EditText然后我按OK,它只是崩溃,并让我在这一行空指针错误:

editor.putString(getString(R.string.name_key), nameEditText.getText().toString());

Answer 1:

你在错误的视图寻找的EditText。 它不是活动的一部分,它的对话的一部分。 因此,检查该视图的对话框:

 Dialog dialogView = dialog.getDialog();
 EditText paymentEt = (EditText) dialogView.findViewById(R.id.edittext_payment);


Answer 2:

而不是使用

EditText nameEditText = (EditText) getActivity().findViewById(R.id.name_text_view);

尝试使用此

Dialog dialg = (Dialog) dialog;
EditText et = (EditText) dialg.findViewById(R.id.search_input_text);
val = et.getText().toString();


文章来源: how to get text from edittext inside a dialog [duplicate]