如何在任何活动中随时显示对话框

问题描述 投票:0回答:2

我想经常检查我的应用程序是否存在新版本,如果有,请向用户显示一条消息。我使用Firebase,将远程配置的版本与应用程序的当前版本连接并进行比较。这不是问题,我的问题是如何在任何活动中随时显示对话框。

我有一个BaseActivity,在这里我有一些方法可以与firebase连接并在其回答时显示消息。此外,我有一个每小时执行一次此更新检查的方法:

    private void checkUpdate() {
        handlerCheckUpdate.postDelayed(() -> {
            getConfigFromFirebase(this);
            checkUpdate();
        }, 3600000);
    }

最后,我有了扩展了BaseActivity的Activity1和Activity2。在我的Activity1中,我启动递归checkUpdate方法。

问题是,如果用户当前在Activity2中,则当消息显示时,它将在Activity1中而不是Activity2中进行。这样做的最佳解决方案是什么?

非常感谢!

android android-handler
2个回答
0
投票

您可以为此设置警报对话框。查看警报对话框的示例

`android.app.AlertDialog.Builder alertDialogBuilder;
    alertDialogBuilder = new AlertDialog.Builder(YourActivity.this);
    alertDialogBuilder.setTitle("Your Title");
    alertDialogBuilder.setMessage("Your massage");

    alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
    });

    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();` 

0
投票

您需要在Application类中创建一个对话框,并将上下文传递给它。

class App : Application() {

    fun showAlert(context: Context) {
        val builder = AlertDialog.Builder(context)
                builder.setTitle(getString(R.string.your_title))
                builder.setMessage(getString(R.string.your_message))
                builder.setPositiveButton("OK") { dialog, _ ->
                   dialog.dismiss()
                }
     val dialog: AlertDialog = builder.create()
            dialog.setCancelable(false) // make it true if you want to cancel
            dialog.setCanceledOnTouchOutside(false)
            dialog.show()
    }
}

并且您需要在清单文件中的application标记下添加此行

<application
        android:name=".App"
        android:allowBackup="false"
......>

通过传递上下文从您的任何活动中调用该函数:

App().showAlert(YourActivity.this)
© www.soinside.com 2019 - 2024. All rights reserved.