Java Android中的TextView.setText

Java Android中的TextView.setText,java,android,Java,Android,我是Android开发新手,我想了解TextView.setText方法的工作原理。在这个例子中 private TrueFalse[] mQuestionBank = new TrueFalse[] { new TrueFalse(R.string.question_oceans, true), new TrueFalse(R.string.question_mideast, false),

我是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怎么足够呢?你能给我解释一下吗?谢谢。

将字符串添加到字符串文件时,会在R文件中生成一个引用,该引用是一个int,可以在代码和xml文件中使用,如:

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


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

int这里是String.xml中定义的字符串值的id。所以textView.setText(intresid)将值作为字符串获取,然后在内部设置

以下是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));
}

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

int是strings.xml、
R.string.question\u
的一个条目,例如。@Blackbelt so setText在R.java文件中搜索并找到字符串并打印它?不完全是这样。它向
AssetManager
请求字符串。java只包含我看到的idsok的定义。非常感谢。