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