首先,我很清楚会发生此错误,因为我试图通过不是ContextActivity调用窗口/对话框。

但是没有任何解决方案。我的要求是;我在普通JAVA类的方法中有一个带有自定义样式表的Dialog。当我需要加载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();
}


通过保持这种设计,是否有任何方法可以摆脱WindowManager $ BadTokenException

谢谢

最佳答案

我将修改您的代码,这可能对您有所帮助...

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


在您的Home类中..添加参数构造函数。

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();
}

关于android - Android中的WindowManager $ BadTokenException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10429213/

10-08 23:40