2012-11-27 14 views
9

私は警告ダイアログを作成するには、次のコードを持っていると私はそれに2つのエディットテキストを追加しましたが、私はNullPointerExceptionでアプリのEditText内の値がretrivedされず、私のアプリのクラッシュを実行した後:アラートダイアログにEditTextを追加する。

コードは次のとおりです。

AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     LayoutInflater inflater=this.getLayoutInflater(); 
     final EditText usernameInput=(EditText)findViewById(R.id.dialogusername); 
     final EditText passwordInput=(EditText)findViewById(R.id.dialogpassword); 
     alert.setView(inflater.inflate(R.layout.dialog,null)); 
     alert.setTitle("Enter Password"); 
     alert.setMessage("Enter password to remove the app:"); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      //provide user with caution before uninstalling 
      //also here should be added a AsyncTask that going to read the password and once its checked the password is correct the app will be removed 
      value1=usernameInput.getText().toString(); 
      value2=passwordInput.getText().toString(); 
      if(value1.equals(null)&&value2.equals(null)) 
      {Toast.makeText(context, "Enter username and password", Toast.LENGTH_SHORT).show();} 
     } 
     }); 
     }); 
     alert.show(); 
+0

findViewByIdが間違って呼び出されました。呼び出しalert.findViewByID – Yahor10

+0

Yahor10、ありがとう、私はあなたのやり方をしようとし、alert.findViewById()と呼ばれる関数がないので、エラーを取得しています。私が持っている唯一のものはthis.findViewById()も動作しませんでした..しかし、どのように私はこの問題を解決するために使用したソリューションを投稿.. –

答えて

22

みんなありがとう、と私は私がその上に掲示問題の解決策がありましたと思う:

AlertDialog.Builder alert = new AlertDialog.Builder(MyFeedActivity.this); 
     LayoutInflater inflater=MyFeedActivity.this.getLayoutInflater(); 
     //this is what I did to added the layout to the alert dialog 
     View layout=inflater.inflate(R.layout.dialog,null);  
     alert.setView(layout); 
     final EditText usernameInput=(EditText)layout.findViewById(R.id.dialogusername); 
     final EditText passwordInput=(EditText)layout.findViewById(R.id.dialogpassword); 

と私は思います問題は、警告ダイアログ内でEidtTextを取得できないということでしたが、上記のコードを実行することで、すべてのことがわかりやすく機能します。

1

この

final EditText usernameInput=(EditText)this.findViewById(R.id.dialogusername); 
final EditText passwordInput=(EditText)this.findViewById(R.id.dialogpassword); 

OR

final EditText usernameInput=(EditText)alert.findViewById(R.id.dialogusername); 
final EditText passwordInput=(EditText)alert.findViewById(R.id.dialogpassword); 
のように編集してください10
10

使用この:私の質問に答えるあなたの貢献のための

final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
    final EditText input = new EditText(this); 
    input.setHint("hint"); 
    alertDialog.setTitle("title"); 
    alertDialog.setMessage(message); 
    alertDialog.setView(input); 
+0

これは、 –

関連する問題