我有一个包含 3 个
Fragments
的Activity
,现在每个 fragment 都有 2 个ToggleButtons
(总共六个按钮)。每次单击按钮时,都会向用户显示一个
AlertDialog
。每个按钮执行一些不同的操作,因此警报对话框的布局/ View 彼此不同,因此对话框的肯定按钮点击也不同,而否定按钮点击几乎相同。
我已经在 Activity 的 onButtonPressed 方法中实现了逻辑
onButtonPressed(View v){
switch(v.getId()){
case R.id.button1:
// create and show an AlertDialog
break;
}
case R.id.button2:
// create and show an AlertDialog
break;
}
case R.id.button3:
// create and show an AlertDialog
break;
}
.
.
.
}
这会导致大量重复的代码行,据我所知,这不是最好的事情。我想知道我是否应该保留当前的实现,或者创建一个包装类来创建和显示 AlertDialogs。
最佳答案
您可以创建一个类,然后扩展DialogFragment
类,然后覆盖其OnCreateDialog()
方法,然后创建一个静态方法来创建实例并传递参数。
OnCreateDialog
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
//set title,message or view ....
// when you done
return dialog.create();
}
放置参数的静态方法(Static Factory Pattern Design)
public static CustomAlertDialog newInstance(String title,String message) {
CustomAlertDialog customAD = new CustomAlertDialog();
Bundle args = new Bundle();
args.putString("title", title);
args.putString("message", message);
customAD.setArguments(args);
return customAD;
}
然后你可以像这样使用它
DialogFragment dialog = CustomAlertDialog.newInstance("titulo","message");
dialog.show(/* etc.. */ );
关于android - 在 Activity 中实现多个警报对话框的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20596671/