我正在构建一个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");
}
您有两种解决方法
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");
}
});
}