窗口管理器,$ BadTokenException Android中(WindowManager$B

2019-06-24 03:40发布

首先,我很清楚地知道,这个错误发生,因为我试图调用窗口/通过一个对话框Context ,是不是一个Activity

但是,是不是有什么解决办法了这一点。 我的要求; 我有一个Dialog使用自定义样式表在一个普通的Java类的方法。 我想从任何该方法Activity类,当我需要加载Dialog

在我的Activity类我有下面的代码集;

HomeClass homeClass = new HomeClass();
homeClass.showSplashScreen();

然后在我的HomeClass我有以下的代码集;

public void showSplashScreen() {        
 splashDialog = new Dialog(HomeActivity.getAppContext(), R.style.SplashScreen);
 splashDialog.setContentView(R.layout.splash_screen);
 splashDialog.setCancelable(false);
 splashDialog.show();
}

通过保持这样的设计,有没有什么办法来摆脱窗口管理器,$ BadTokenException

谢谢

Answer 1:

我要修改你的代码,也许对你有帮助...

HomeClass homeClass = new HomeClass(this);
homeClass.showSplashScreen();

在您的家类..添加参数的构造函数..

public class Home {
private Context context;
public Home(Context context){
this.context = context;
}
public void showSplashScreen() {        
splashDialog = new Dialog(context, R.style.SplashScreen);
 splashDialog.setContentView(R.layout.splash_screen);
 splashDialog.setCancelable(false);
splashDialog.show();
}


Answer 2:

您通过活动来showSplashScreen()方法...

做这样的..

HomeClass homeClass = new HomeClass();
homeClass.showSplashScreen(Your Actvity);

在您的家班

public void showSplashScreen(Activity curActivity) {        
 splashDialog = new Dialog(curActivity, R.style.SplashScreen);
 splashDialog.setContentView(R.layout.splash_screen);
 splashDialog.setCancelable(false);
 splashDialog.show();
}


文章来源: WindowManager$BadTokenException in Android