Android中的TextView.setText

时间:2015-06-09 14:11:17

标签: java android

我是Android开发的新手,我想了解TextView.setText方法的工作原理。在这个例子中,

private TrueFalse[] mQuestionBank = new TrueFalse[]
        {
                new TrueFalse(R.string.question_oceans, true),
                new TrueFalse(R.string.question_mideast, false),
                new TrueFalse(R.string.question_africa, false),
        };

private  int mCurrentIndex = 0;
mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
int question = mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);

我无法理解的是,setText如何通过获取int来返回问题文本? int如何才足够?你能解释一下吗?感谢。

2 个答案:

答案 0 :(得分:1)

当你向String文件添加一个String时,它会在R文件中生成一个引用,这个引用是一个int,它可以在代码和xml文件中使用,如:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/question_oceans" />

R文件中字符串“R.string.question_oceans”的引用是一个int,因此SetText可以接受int(来自引用)并且可以接受像“my string”这样的真正字符串。

答案 1 :(得分:1)

int here,是string.xml中定义的String值的id。因此textView.setText(int resid)将值作为字符串获取,然后在内部设置。

这是TextView的源代码。

public final void setText(CharSequence text) {
        setText(text, mBufferType);
}

// So this get string value from resources and use the above setText().
public final void setText(int resid) {
    setText(getContext().getResources().getText(resid));
}

您可以避免从资源中获取字符串值并使代码更简单。