2014-06-07 64 views
1

我搜索了但未找到答案。 我該如何做一個變量final和global。 我已經嘗試過這樣的:如何在Android中創建最終的全局變量

public class StartActivity extends Activity { 
    ... 
    private final Dialog dialog = new Dialog(this, android.R.style.Theme_Black_NoTitleBar_Fullscreen); 
    ... 
} 

但我得到這個錯誤:

06-07 19:57:38.461: E/AndroidRuntime(13810): java.lang.RuntimeException: 
Unable to instantiate activity ComponentInfo{com.xxx.xxx/com.xxx.xxx. 
StartActivity}: java.lang.IllegalStateException: System services not available to 
Activities before onCreate() 

我不知道如何避免這種錯誤,因爲當我嘗試這樣做:

public class StartActivity extends Activity { 
    ... 
    private final Dialog dialog; 
    ... 
} 

並初始化變量在onCreate()方法,我得到這個錯誤在Eclipse:

The blank final field dialog may not have been initialized. 
+0

你爲什麼需要它是最終的。刪除最終修飾符。將它聲明爲一個實例變量 – Raghunandan

+0

我需要變量是最終的,因爲我在onClick方法中使用它:'dialog.dismiss' –

+0

仍然不需要最終的修飾符。試試下面的 – Raghunandan

回答

0

刪除final修飾符

public class StartActivity extends Activity { 

private Dialog dialog; // declare it as a instance variable 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.yourlayout); 
     dialog = new Dialog(this, android.R.style.Theme_Black_NoTitleBar_Fullscreen); 
     // initialize dialog 
} 

現在你可以在onClick使用dialog

還要注意this指活動上下文,一旦被創建活動上下文可用。

0

爲什麼你需要onCreate實例?在onClick上實例化它。

+0

如果我的onClick實例我得到的錯誤:'空白最終場對話可能沒有initialized.' –

+0

你並不需要把它作爲最終場了,使它成爲一個局部變量。 –

+0

但我也使用相同的對話框中其他函數來獲取意見'dialog.findViewById(...)' –