2014-09-24 38 views
0

就像標題所說,我怎樣才能從自定義對話框中找到的EditText中獲取文本?如何從對話框中的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()); 
+1

'(EditText上)getActivity()' - >'(EditText上)dialog' – njzk2 2014-09-24 13:57:24

回答

3

您正在尋找錯誤視圖中的EditText。它不是活動的一部分,它是對話框的一部分。因此,檢查該對話框的視圖:

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

謝謝:)我想我可能需要使用的東西,而不是其他getActivity(),但我試圖給它片段管理員 – 2014-09-24 14:09:23

0

而不是使用

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(); 
相關問題