2013-12-10 3 views
2

Вот мой код для инициализации AlertDialog; buildexit является AlertDialog.Builder и exitalert является AlertDialog:Использование метода onClick() DialogInterface

buildexit=new AlertDialog.Builder(this); 
buildexit.setTitle("Exit?"); 
buildexit.setIcon(R.drawable.ic_action_warning); 
buildexit.setMessage("Do you want to really exit?"); 
buildexit.setPositiveButton("Yes", this); 
buildexit.setNegativeButton("No", this); 
exitalert=buildexit.create(); 

Я хочу завершить приложение, используя Activity.finish() метод, когда пользователь нажимает на кнопку «Да», если «Нет», это нажать ничего не должно произойти, я также реализовал android.content.DialogInterface.OnClickListener интерфейс, реализованный метод: public void onClick(DialogInterface arg0, int arg1).
Спасибо заранее.

ответ

3

Попробуйте это:

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

     // set title 
     alertDialogBuilder.setTitle("Your Title"); 

     // set dialog message 
     alertDialogBuilder 
      .setMessage("Click yes to exit!") 
      .setCancelable(false) 
      .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, close 
        // current activity 
        MainActivity.this.finish(); 
       } 
       }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
       } 
      }); 

      // create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 

      // show it 
      alertDialog.show(); 
     } 
+0

Спасибо, но есть ли способ, что я реализовать интерфейс и использовать OnClick (...), как 'общественного класса ... расширяет активность реализует android.content.DialogInterface.OnClickListener '. – Ved

+0

@Ved Не могли бы вы разместить полный исходный код –

0
AlertDialog buildexit = new AlertDialog.Builder(this) 
    .setTitle("Exit?") 
    .setIcon(R.drawable.ic_launcher) 
    .setMessage("Do you want to really exit?") 
    .setPositiveButton("Yes", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MainActivity.this.finish();     
     } 
    }) 
    .setNegativeButton("No", new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss();     
     } 
    }) 
    .create(); 

    buildexit.show(); 
10

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

Чтобы избежать создания нового DialogInterface.onClickListener() для каждой кнопки, вы можете позволить классу реализовать AlertDialog.OnClickListener, а затем переопределить public void onClick(DialogInterface dialog, int which).

int which в этом методе находится нажатая кнопка или позиция. См. Android Reference для получения более подробной информации.

Так что если вы хотите проверить, какая кнопка была нажата, вы можете использовать коммутационный футляр и искать константы BUTTON_NEGATIVE, BUTTON_NEUTRAL и BUTTON_POSITIVE.

Пример:

// skipping package and imports 
public class TestActivity extends Activity implements AlertDialog.OnClickListener { 

    void createAndShowDialog() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle(R.string.title); 
     builder.setMessage(R.string.message); 
     builder.setPositiveButton(android.R.string.yes, this); 
     builder.setNeutralButton(android.R.string.cancel, this); 
     builder.setNegativeButton(android.R.string.no, this); 
     builder.create().show(); 
    } 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     switch (which) { 
      case BUTTON_NEGATIVE: 
       // int which = -2 
       dialog.dismiss(); 
       break; 
      case BUTTON_NEUTRAL: 
       // int which = -3 
       dialog.dismiss(); 
       break; 
      case BUTTON_POSITIVE: 
       // int which = -1 
       TestActivity.this.finish(); 
       dialog.dismiss(); 
       break; 
    } 
} 
Смежные вопросы