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

YourHomeクラスに..パラメトリックコンストラクターを追加します。.

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 に答える