如何分配stringid动态,我已经在strings.xml文件中创建了字符串字段数。
的strings.xml
<string name="read_more_0">defautl message</string>
<string name="read_more_1">first messages.</string>
<string name="read_more_2">second messages.</string>
<string name="read_more_3">third messages.</string>
简单活动:
public class dynamic_Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dynamic_layout_01);
txtDisplay = (TextView) findViewById(R.id.textView1);
//getting position value from the previous activity
int position = getIntent().getIntExtra("position", default_value);
if (position > 0)
{
String _format = "read_more_" + String.valueOf(position);
txtDisplay.setText(R.string._format); // how to assign the string id?
} else {
txtDisplay.setText(R.string.read_more_0); //by default
}
}
}
布局文件:
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/dynamic_0"
android:textSize="12dp" />
</LinearLayout>
答案 0 :(得分:2)
在这种特殊情况下,我认为您应该考虑使用string array resource。
答案 1 :(得分:1)
两种方法:
1)在类中声明一个map或switch语句,用于将位置链接到资源id。这样可以提供更好的性能。
2)如果您必须从动态字符串中获取资源,则可以使用getIdentifier方法。请注意,性能不是很好。
Resources resources = getResources();
int id = resources.getIdentifier("read_more_" + String.valueOf(position), "string", getPackageName());
String str = resources.getString(id);
答案 2 :(得分:0)
switch (position) {
case 0: txtDisplay.setText(R.string.read_more_0); break;
case 1: txtDisplay.setText(R.string.read_more_1); break;
// and so forth...
}