如何在Android中制作最终的全局变量

时间:2014-06-07 18:08:08

标签: android initialization global-variables final

我搜索过但没有找到答案。 如何将变量设为final和global。 我已经尝试过了:

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.

2 个答案:

答案 0 :(得分:0)

删除最终修饰符

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
}  

现在,您可以使用dialog中的onClick

另请注意,this表示创建活动后可以使用活动上下文和上下文。

答案 1 :(得分:0)

为什么需要在onCreate中实例化?在onClick上实例化。