Android 将几个AliertDialog处理为一个Dialog.onClickListener

Android 将几个AliertDialog处理为一个Dialog.onClickListener,android,android-alertdialog,onclicklistener,Android,Android Alertdialog,Onclicklistener,我在网上搜索过,但没有找到什么好东西 所以我试图找到解决这个问题的方法。 我找到了一个,但现在我想问,这是不是太脏了,是否使用过,是否有危险 import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bund

我在网上搜索过,但没有找到什么好东西

所以我试图找到解决这个问题的方法。 我找到了一个,但现在我想问,这是不是太脏了,是否使用过,是否有危险

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
      }
   }
}

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

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();

是的,我知道其他方法,例如很少有听众(匿名或非匿名)使用它们。我只是想找到另一个解决方案。这些都是你的选择。事件中没有传递的标识信息(没有执行一些不保证安全的强制转换),因此您可以在应用程序中保持某些当前状态(增加不必要的复杂性),或者只使用另一个侦听器。