Как установить одно диалоговое окно с разными названиями одновременно для нескольких кнопок - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь установить один код диалогового окна с другим заголовком одновременно при многократном нажатии кнопки.Я получил вывод, как неоднократно, он принимает первый заголовок, который я объявил.

Это мой код:

public class ButtonClickDialogueActivity extends Activity implements OnClickListener    {
/** Called when the activity is first created. */
static final int DIALOG_ID = 0;
public  Button b1,b2,b3;
public  String DiaTitle;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b1 = (Button)findViewById(R.id.banana);
    b2 = (Button)findViewById(R.id.milk);
    b3 = (Button)findViewById(R.id.egg);
    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    b3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId())
    {
    case R.id.banana:
        DiaTitle="BANANA";
        showDialog(DIALOG_ID);
        break;
    case R.id.milk:
        DiaTitle="MILK";
        showDialog(DIALOG_ID);
        break;
    case R.id.egg:
        DiaTitle="EGG";
        showDialog(DIALOG_ID);
        break;
    }
}
protected final Dialog onCreateDialog(final int id) {
    Dialog dialog = null;
    switch(id) {
    case DIALOG_ID:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle(DiaTitle.toString());

        builder.setMessage("Alert Box");
        builder.setInverseBackgroundForced(true);
        builder.setCancelable(true);
        builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Toast.makeText(getApplicationContext(), "Banana Added into your Menu",Toast.LENGTH_SHORT).show();       
                dialog.cancel();
            }
        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
        });
        AlertDialog alert = builder.create(); 
        dialog = alert;
        break;
    default:
      }
      return dialog;
     }
}

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Не знаю, понимаю ли я ваш вопрос или нет, но я думаю, что вы должны сделать что-то вроде

 @Override
 public void onClick(View v) {
     // TODO Auto-generated method stub
     switch(v.getId())
     {
     case R.id.banana:
         DiaTitle="BANANA";
         ShowMessageT(DiaTitle, "Alert Box");
         break;
     case R.id.milk:
         DiaTitle="MILK";
         ShowMessageT(DiaTitle, "Alert Box");
         break;
     case R.id.egg:
         DiaTitle="EGG";
         ShowMessageT(DiaTitle, "Alert Box");
         break;
     }



 public void ShowMessageT(final String title,final String message)
        {

         AlertDialog.Builder builder = new AlertDialog.Builder(this);

         builder.setTitle(title);

         builder.setMessage("Alert Box");
         builder.setInverseBackgroundForced(true);
         builder.setCancelable(true);
         builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                 Toast.makeText(getApplicationContext(), "Banana Added into your Menu",Toast.LENGTH_SHORT).show();       
                 dialog.cancel();
             }
         })
         .setNegativeButton("No", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
             dialog.cancel();
         }
         });
         AlertDialog alert = builder.create(); 
          alert.show();

        }

Попробуйте и дайте мне знать, что произойдет ...

0 голосов
/ 15 декабря 2011

onCreateDialog() вызывается только один раз, когда ваш диалог создается впервые.Вам нужно установить заголовок в onPrepareDialog () , который запускается при каждом showDialog() вызове.

Простой фрагмент:

@Override
protected void onPrepareDialog(int id, Dialog dialog){
    switch (id){
        case DIALOG_ID:
            dialog.setTitle(DiaTitle.toString());
            break;
    }
}

вы можете сохранить существующий коднетронутый.

...