使用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
但是,我很确定这可以在其他类中使用 - 而不是主要的活动类。
答案 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);
}
}