[android]R.class里有ID,onCreate方法里调用findViewById返回空

在做android练习,一个新手错误,记录一下:

在练习android权威编程指南时,第5章 第二个Activity部分练习,出现标题问题,代码还原如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mQuestionTitle = (TextView)findViewById(R.id.question_title);
        mQuestionAnswer = (TextView)findViewById(R.id.answer_text_view);
        mShowAnswer = (Button)findViewById(R.id.show_answer_button);
        setContentView(R.layout.activity_cheat);
        String mAnswerIsTrue = getIntent().getStringExtra(EXTRA_ANSWER);
        if(mAnswerIsTrue != null && mAnswerIsTrue.equals("")==false){
            mCheatQuestion = GSON.fromJson(mAnswerIsTrue,Question.class);
            mQuestionAnswer.setText(mCheatQuestion.getTextResId());
        }else{
            mQuestionTitle.setText(R.string.cheat_activity_error);
            mQuestionAnswer.setText(R.string.cheat_activity_error);
        }

错误原因是没有设置ContentView就获取对象了,要把findViewById置于setContentView函数下面:

setContentView(R.layout.activity_cheat);

mQuestionTitle = (TextView)findViewById(R.id.question_title);
        mQuestionAnswer = (TextView)findViewById(R.id.answer_text_view);
        mShowAnswer = (Button)findViewById(R.id.show_answer_button);
        

 

原文地址:https://www.cnblogs.com/aocshallo1/p/12256343.html