1

首先,我很清楚发生此错误是因为我试图通过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();
}

通过保持这种设计,有什么办法可以摆脱WindowManager$BadTokenException

谢谢你

4

2 回答 2

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();
}
于 2012-05-03T10:25:40.000 回答
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();
}
于 2012-05-03T10:15:54.983 回答