2016-10-20 1 views
1

ボタンをクリックするとポップアップメニューが表示されます。そのメニューでは、ユーザーは「Assignment Name」を入力することができます。「Assignment Name」は文字列、「Grade」、「Max Points Available」は数字です。 ここでは、ユーザーが何も入力しないか、またはいずれかのEditTextフィールドにnullが入力されていることを確認します。有効な入力が入力されるまでOKボタンを無効にする方法があります。以下は、ポップアップがどのように見えるかの写真です。以下はAndroid:特定の条件でAlertDialogBu​​ilderのOKボタンを無効にする

enter image description here

また、私は「割り当て名は」すでに私のデータベースに存在する場合、「OK」ボタンを無効にしたいMainActivity

Button add = (Button)findViewById(R.id.addBtn); 
add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view){ 
      LayoutInflater li = LayoutInflater.from(context); 
      View promptsView = li.inflate(R.layout.add_individual_name, null); 

      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
      alertDialogBuilder.setView(promptsView); 

      final EditText assignmentName = (EditText) promptsView.findViewById(R.id.enteredIndividualName); 
      final EditText gradeReceived = (EditText) promptsView.findViewById(R.id.enteredUserGrade); 
      final EditText maxPoints = (EditText) promptsView.findViewById(R.id.enteredMaxPoints); 
      alertDialogBuilder.setCancelable(false) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          String name = assignmentName.getText().toString(); 
          String grade = gradeReceived.getText().toString(); 
          String totalPossible = maxPoints.getText().toString(); 
          checkIfNameAlreadyExists(name); 
         } 
        }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

      final AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialog.show(); 

     }}); 

に私のコードです。私はアイテムがDBに存在するかどうかをチェックする関数を持っています。

XMLのコードをAlertDialogなどで確認したい場合は教えてください。

おかげ

答えて

1

あなたはEditTextためTextWatcherを追加する必要があります。 afterTextChangedでは、OKボタンの有効/無効の条件を確認するだけです。

// Your alert dialog config 
... 
final AlertDialog alertDialog = alertDialogBuilder.create(); 
alertDialog.show(); 

// disable the button as default start 
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 

// add TextWatcher for EditText 
editTextAssignmentName.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    @Override 
    public void afterTextChanged(Editable s) { 

     if (s.length() >= 1) { // add your condition here, in your case it is checkIfNameAlreadyExists 
      alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); 
     } else { 
      alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
     } 
    } 
}); 
+0

お返事ありがとうございます。しかし、正確にどこのコードを置くのですか?私が 'alertDialogBu​​ilder.setCancelable(false)'行の前に置くと "OK"ボタンが消えてしまい、その行の後に置くと効果はありません。 –

+0

私の答え(最後のAlertDialog alertDialog = alertDialogBu​​ilder.create(); alertDialog.show();の後)のようなコードブロックを入れてみてください –

+0

これは私が期待したように完璧に機能しました。どうもありがとうございました! –

関連する問題