我在以下文件的onCreate中获取了一个NPE(MySubActivity):
public class MySubActivity extends MySuperActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myTextView.setText(getResources().getString(R.string.myString));
}
}
MySuperActivity:
public class MySuperActivity extends Activity {
protected TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
myTextView = (TextView)findViewById(R.id.myTextViewid);
}
}
奇怪的是,我在测试应用时从未见过这种崩溃。我测试时页面工作正常。但是我得到了谷歌的崩溃报告,通知我崩溃。我无法重现它,我不知道在什么情况下这种崩溃可能发生。看到它对我有用,资源ID和字符串名称等必须正确。
我唯一想到的是,用户可能将手机设置为不同的语言,因此无法正确提取资源。但是,所有这些都有默认资源,我测试了更改模拟器的语言并且没有崩溃。有什么想法吗?
答案 0 :(得分:-1)
在另一种方法中设置您的视图,如下所示:
public class MySubActivity extends MySuperActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private void setView(){
myTextView.setText(getResources().getString(R.string.myString));
}
}
public class MySuperActivity extends Activity {
protected TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
myTextView = (TextView)findViewById(R.id.myTextViewid);
// Or, you can do this in a method called getView() if you like
}
}