我是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如何才足够?你能解释一下吗?感谢。
答案 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));
}
您可以避免从资源中获取字符串值并使代码更简单。