来自不同类的Android对话框

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

我正在构建一个android应用程序,并希望从非活动类(在后台发生)中调用对话框。我希望对话框显示在特定的活动上,但是为了让其他类调用此函数,它必须是静态的,但是我不能从静态上下文中调用getSupportFragmentManager()。是否有解决此问题的方法?这是我正在尝试使用的代码。

    public static void method_invoked_returned_null(String response) {
        ErrorDialog errorDialog = new ErrorDialog();
        ErrorDialog.errorType = "Response Command Error";
        ErrorDialog.errorDialogMessage = "Error in Invoking " + response
                +  ". Do you want to continue?";
        errorDialog.show(getSupportFragmentManager(), "Wrong Response Dialog");
    }
android user-interface android-activity static dialog
1个回答
0
投票

您有两种解决方法

1:转到广播接收器,并在活动中将广播注册到onResume中,然后在onPause中取消注册。

2:您可以在活动中添加静态字段实例,并在onResume中设置值,并在onPause中将其删除

private static AppCompatActivity instance;
@Override
protected void onResume() {
    super.onResume();
    instance = this;
}

@Override
protected void onPause() {
    super.onPause();
    instance = null;
}
public static void method_invoked_returned_null(String response) {
    if (instance == null)
        return;
    instance.runOnUiThread(new Runnable() {
        @Override
        public void run() {

            ErrorDialog errorDialog = new ErrorDialog();
            ErrorDialog.errorType = "Response Command Error";
            ErrorDialog.errorDialogMessage = "Error in Invoking " + response
                    +  ". Do you want to continue?";
            errorDialog.show(instance.getSupportFragmentManager(), "Wrong Response Dialog");
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.