0

こんにちは、次の 2 つの関数があり、ブール値が true または false (ユーザーがテキストを入力したか、EditText に入力しなかった場合) に応じて、以下の「Positivebutton」をブロックできるかどうか疑問に思います。

    private void add() {
            final View addView = getLayoutInflater().inflate(R.layout.add, null);
            new AlertDialog.Builder(this).setTitle("Add a Book").setView(addView)
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            if(addWord((EditText) addView.findViewById(R.id.titleEdit))){
   //Do something, Enable the OK (Positive) button
}
else{
   Toast.makeText(ActionBarMain.this,"Nothing entered", Toast.LENGTH_LONG).show();
//Prevent the user to be able to push the "PositiveButton" (Block it)
}


                        }
                    }).setNegativeButton("Cancel", null).show();
        }

        private boolean addWord(EditText title){
            String mDisplaySting = title.getText().toString();
            if(mDisplaySting.matches("")){
                Log.i(TAG,"null");
                return false;       
            }
            return true;
        }
4

2 に答える 2

0

次のように無効化を行うことができます。

public void onClick(DialogInterface dialog, int whichButton) {
   if(addWord((EditText) addView.findViewById(R.id.titleEdit))){
      // Do something, Enable the OK (Positive) button
   } else {
      Toast.makeText(ActionBarMain.this, "Nothing entered",
          Toast.LENGTH_LONG).show();
      //Prevent the user to be able to push the "PositiveButton" (Block it)
      AlertDialog myDialog = (AlertDialog)dialog;
      Button button = myDialog.getButton(whichButton);
      button.setOnClickListener(null);
   }
}

ボタンにアクセスできるようになったので、ボタンをブロックする他の方法を試すこともできます。

于 2012-11-15T17:53:10.193 に答える
0
AlertDialog mAlertDialog = new AlertDialog.Builder(this)
                               .setTitle("Add a Book").setView(addView)
                               .setNegativeButton("Cancel", null);

if(!edittext.getText().toString().equals("")){
    mAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        [...]
                    }
                 });
}

mAlertDialog.show();

このようなもの。テストしませんでした。

于 2012-11-15T18:00:35.057 に答える