0

我在以下文件(MySubActivity)的 onCreate 中获得了 NPE:

public class MySubActivity extends MySuperActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        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);
    }
}

奇怪的是,我在测试应用程序时从未见过这种崩溃。当我测试它时,该页面工作正常。但是,我从 Google 收到了一份崩溃报告,通知我发生了崩溃。我无法重现它,我不知道在什么情况下会发生这种崩溃。看看它对我的工作方式,资源ID和字符串名称等必须是正确的。

我唯一想到的是,也许用户将他们的手机设置为不同的语言,所以它无法正确提取资源。但是,它们都有默认资源,并且我测试了更改我的模拟器的语言并且它没有崩溃。有任何想法吗?

4

1 回答 1

-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));
    }
}

编辑:不要在 MySuperActivity 中调用 setView()

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
    }
}
于 2013-11-07T23:29:40.967 回答