将少量AliertDialogs处理成一个Dialog.onClickListener

时间:2013-06-12 22:13:37

标签: android alertdialog android-alertdialog onclicklistener

我已经搜索过互联网,但没有找到好的东西。

所以我试图找到解决这个问题的方法。 我发现了一个,但现在我想问一下,这个太脏的解决方案,无论是否使用,是否危险?

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;

public class MyActivity extends Activity implements OnClickListener {

   public void onCreate(Bundle b) {
      new AlertDialog.Builder(this)
         .setTitle("Title1")
         .setPositiveBUtton("Ok",this)
         .show();
      new AlertDialog.Builder(this)
         .setTitle("Title2")
         .setPositiveButton("Ok",this)
         .show();
   }

   @Override
   public void onClick(DialogInterface dialog, int id) {
      String dialogTitle = ((AlertDialog)dialog).getActionBar().getTitle().toString();
      if(dialogTitle.equals("Title1")) {
         switch(id) {
            //do smth
         }
      } else if(dialogTitle.equals("Title2")) {
         switch(id) {
            //do smth
         }
      } else {
         //no such dialog
      }
   }
}

1 个答案:

答案 0 :(得分:0)

这似乎非常脆弱。我建议只使用多个侦听器,每个对话框一个:

private DialogInterface.OnClickListener mFirstListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick (DialogInterface dialog, int which) {
        //Handle first dialog
    }
};

private DialogInterface.OnClickListener mSecondListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick (DialogInterface dialog, int which) {
        //Handle second dialog
    }
};

然后只为每个对话框分配一个监听器:

new AlertDialog.Builder(this)
    .setTitle("First Dialog")
    .setPositiveButton("Ok", mFirstListener)
    .show();