2012-05-03 56 views
1

首先,我很清楚這個錯誤是因爲我試圖通過不是ActivityContext調用窗口/對話框而發生的。

但是沒有任何解決方案。我的要求是;我有一個Dialog與正常的JAVA類的方法中的自定義樣式表。當我需要加載Dialog時,我想從任何Activity類中調用該方法。

在我的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

謝謝你

+0

忘了提及'getAppContext()'是對Activity類的靜態引用。意思是在我的Activity類中有一個像HomeActivity.homeActivityContext = getApplicationContext();這樣的代碼段,並且從'getAppContext'中返回該變量。 – AnujAroshA

回答

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

是的,它正在工作。謝謝。 – AnujAroshA

+0

歡迎您...... :-) –

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

這不起作用。如果你確信你的代碼,那麼你能否解釋一下「你的活動」的說法。 – AnujAroshA

+0

老兄U需要寫你的活動名稱作爲參數來代替「你的活動」...例如:HomeActivity.this – Pradeep

+0

是的,我可以理解這一點。但它會給你一個例外。順便說一句,我已經找出一個辦法。謝謝回覆。 – AnujAroshA

相關問題