2017-03-01 7 views
-1

私はDialogFragmentを作成しました。 ダイアログにEditTextがあり、それをダイアログのxmlから呼び出します。 が、エラーがあります:このコードにnullオブジェクト参照エラーで仮想メソッド 'android.text.Editable android.widget.EditText.getText()'を呼び出そうとしました

新しいヌルオブジェクト参照に「)android.text.Editable android.widget.EditText.getText(」仮想メソッドを呼び出す試み:

AlertDialog alertDialog; 
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

がと

final EditText editText = (EditText) alertDialog.findViewById(R.id.editTextPasswordDeveloper); 

マイコード:

public class DeveloperLoginDialogFragment extends DialogFragment { 

EditText editText; 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    final LayoutInflater inflaterDialog = getActivity().getLayoutInflater(); 

    AlertDialog alertDialog; 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    alertDialog = builder.create(); 

    // final AlertDialog alertDialog = new AlertDialog.Builder(getActivity()); 
    builder.setCancelable(false); 
    builder.setView(inflaterDialog.inflate(R.layout.alertdialog_developer, null)); 
    final EditText editText = (EditText) alertDialog.findViewById(R.id.editTextPasswordDeveloper); 
    builder.setTitle("Entwickler-Login"); 
    builder.setMessage("Um dich als Entwickler zu verifizieren, gib den Entwickler-Code bitte unten ein."); 
    builder.setPositiveButton("Verifizieren", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      if(editText.getText().toString().equals("7846")) { 
       dialog.dismiss(); 
       Toast.makeText(getActivity().getApplicationContext(),"Erfolgreich verifiziert!", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
    builder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Intent intent = new Intent(getActivity(), MainActivity.class); 
      startActivity(intent); 
     } 
    }); 
    return builder.create(); 
} 

}

+1

オブジェクトに値を割り当てる前に 'findViewById'を呼び出しています。おそらく 'inflaterDialog.inflate'の値をView変数に代入し、' view.findViewById'を実行したいと考えています。 – Sourabh

答えて

1

問題は単純で、編集テキストを使用してビューを検索しています。レイアウトを拡張し、findViewByIdを使うか、alertDialog.findViewById()を使うかの2つのオプションがあります。

これを試してください。

AlertDialog.Builder builder = new AlertDialog.Builder(FeedFragment.this.getActivity()); 
    builder.setView(R.layout.layout_edit_review); 
    builder.setCancelable(true); 
    Dialog dialog = builder.create(); 
    dialog.show(); 
    TextInputEditText text_edit = (TextInputEditText) dialog.findViewById(R.id.editReview); 

+0

ありがとう!しかし、それは言う:仮想メソッド 'android.text.Editable android.widget.EditText.getText()' nullオブジェクトの参照を呼び出すには、 –

+0

最初にbuilder.thenのビューを設定します。findViewById – Remario

+0

これは、.getText ) –

0

editText = (EditText) editText.findViewById(R.id.editTextPasswordDeveloper);

あなたはnullですeditTextfindViewById()呼びかけています。代わりにEditText editText = (EditText) alertDialog.findViewById(R.id.label_field);を使用します。

editTextではなくalertDialogの使用に注意してください。

関連する問題