Android中的WindowManager $ BadTokenException

时间:2012-05-03 10:07:14

标签: android alertdialog

首先,我很清楚发生此错误是因为我试图通过不是Context的{​​{1}}调用窗口/对话框。

但是没有任何解决方案。我的要求是;我有一个Activity在普通JAVA类的方法中有自定义样式表。我想在加载Dialog时从任何Activity类调用该方法。

在我的Activity类中,我有以下代码集;

Dialog

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

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

通过维护这个设计,有没有办法摆脱 WindowManager $ BadTokenException

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

将您的活动传递给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();
}