android - 在 Activity 中实现多个警报对话框的最佳方式

标签 android android-fragments android-alertdialog

  • 我有一个包含 3 个 FragmentsActivity,现在每个 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/

相关文章:

android - 在android中调用另一个 Activity 时如何避免黑屏?

android - Android 设备的 VLAN

android - 查明 MotionEvent 何时结束

android - 如何将Android ARGB图像格式转换为opencv中使用的RGB图像格式?

android - 缺少 Google Play 服务

java - 为什么我的 Activity 在添加 fragment 时会被破坏?

android - Listview 与 ToolBar 重叠

java - 输入 EditText 时应用程序崩溃

android - 如何获得背景失焦(模糊)的 Alertdialog

android - 如何以编程方式单击警报对话框肯定按钮?