Android资源作为主要活动中的成员变量

时间:2012-02-17 17:01:39

标签: android resources

使用android hello世界,我接下来在strings.xml资源文件中添加了一些字符串。然后我尝试将主活动类的成员变量设置为其中一个字符串的值:

public class MyActivity extends Activity {
  /** Called when the activity is first created. */
  public String myString = getString(R.string.MY_STRING); // compiles, but crashes

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this); 
    tv.setText(myString);
    setContentView(tv);
  }     
}

当它崩溃时,我在logcat中得到这个: 无法实例化活动ComponentInfo {com.myclass}:java.lang.NullPointerException

那么,我做错了,还是这种预期的行为?查看文档, 我没有看到任何让我认为在构建主要活动时资源无法使用的东西。

http://developer.android.com/guide/topics/resources/accessing-resources.html

但是,我很确定这可以在其他类中使用 - 而不是主要的活动类。

1 个答案:

答案 0 :(得分:1)

我认为你不能在Activity类上调用getString,因为它可能尚未正确初始化。您可能需要拆分声明(将其保留为公共字符串),然后拆分(将其移至onCreate)。

public class MyActivity extends Activity {
      /** Called when the activity is first created. */
      public String myString;

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myString = getString(R.string.MY_STRING); // compiles, but crashes
        TextView tv = new TextView(this); 
        tv.setText(myString);
        setContentView(tv);
      }     
    }