下面例子中介绍 如何在程序运行时,通过CharSequence依据Resource ID取出字符串并正确更改TextView的文字。
运行结果
程序:
1、ex03_05/res/layout/main.xml
为了做对比,main.xml文件里创建两个TextView,并采用LinearLayout的方式配置,一上一下,在运行结果中id为myTextView01的TextView并没有任何文字的更改,维持一开始的Str_1,但在程序运行后,id为myTextView02的TextView则做了文字的实时更改。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/myTextView01"
android:layout_marginLeft="0px"
android:layout_marginTop="0px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_1"
/>
<TextView
android:id="@+id/myTextView02"
android:layout_marginLeft="0px"
android:layout_marginTop="10px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_2"
/>
</LinearLayout>
2、ex03_05/res/values/strings.xml文件里添加两个字符串
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ex03_05!</string>
<string name="app_name">ex03_05</string>
<string name="str_1">我是resources里的“字符串1”</string>
<string name="str_2">“字符串2”</string>
</resources>
3、ex03_05/src/irdc.ex03_05/ex03_05.java
主程序的差异主要是在更改mTextView02的文字时,合并了str_3和str_2这两个不同的对象,由于setText方法同时支持CharSequence与String类型的参数,故在此例子中不同数据类型的字符串进行同步输出。
package com.example.ex03_05;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ex03_05 extends Activity {
private TextView mTextView02;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView02 = (TextView)findViewById(R.id.myTextView02);
CharSequence str_2=getString(R.string.str_2);
String str_3="我是程序里调用Resource的";
mTextView02.setText(str_3+str_2);
}
}