Rac*_*hra 5 android android-fragments android-alertdialog
我有一个Activity3 Fragments,现在每个片段有2 ToggleButtons(总共六个按钮).
AlertDialog在每次按钮点击时向用户显示An .
每个按钮执行一些不同的操作,因此警报对话框的布局/视图彼此不同,因此对话框的正按钮单击也不同,而负按钮单击几乎相同.
我已经在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;
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
这导致了许多重复的代码行,这不是AFAIK最好的东西.我愿意知道我是否应该保持当前的实现,或者创建一个包装类来创建和显示AlertDialogs.
Lui*_*ena 10
您可以创建一个类然后扩展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();
}
Run Code Online (Sandbox Code Playgroud)
放置参数的静态方法(静态工厂模式设计)
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;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它
DialogFragment dialog = CustomAlertDialog.newInstance("titulo","message");
dialog.show(/* etc.. */ );
Run Code Online (Sandbox Code Playgroud)