我在单击下一个按钮时使用以下代码更新图像切换器和相应的字符串,但是我在GetMyString()
中的res / strings文件夹中引用字符串时遇到了问题。
例如,我的一个字符串名为cutString
。如何引用它而不是YOUR_STRING_01
?是否有一种简单的方法来调用字符串,或者这个实现中是否存在缺陷?
btnNext.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
currentIndex++;
// If index reaches maximum reset it
if(currentIndex==messageCount)
currentIndex=0;
imageSwitcher.setImageResource(imageIds[currentIndex]);
tView.setText(getMyString(clicks++));
}
});
//method called to update textview strings.
public String getMyString(int variable){
switch(variable){
case 1:
return YOUR_STRING_01;
break;
case 2:
return YOUR_STRING_02;
break;
case 3:
return YOUR_STRING_03;
break;
}
答案 0 :(得分:3)
所以我注意到你的实现并不一定引用上下文所以你需要做这样的事情。
//method called to update textview strings.
public String getMyString(final int variable, final Context applicationContext){
switch(variable){
case 1:
return applicationContext.getResources().getString(R.string.something);
break;
case 2:
return applicationContext.getResources().getString(R.string.something2);
break;
case 3:
return applicationContext.getResources().getString(R.string.something3);
break;
}
}
答案 1 :(得分:1)
您可以通过getString()函数访问strings.xml中存储的字符串。
示例:
保存在res / values / strings.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello!</string>
</resources>
此布局XML将字符串应用于视图:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
此应用程序代码检索字符串:
String string = getString(R.string.hello);
您可以使用getString(int)或getText(int)来检索字符串。 getText(int)将保留应用于字符串的任何富文本样式。
答案 2 :(得分:0)
使用String str = getResources().getString(R.string.cutString);
或String str = getString(R.string.cutString);
这两个选项都是Context
- http://developer.android.com/reference/android/content/Context.html
答案 3 :(得分:0)
使用R
类,即:
R.string.cutString;
要获得价值,请使用getString()
:
String text = getResources().getString(R.string.cutString);
答案 4 :(得分:0)
从Context类继承的每个类都有一个名为getString的方法,您可以使用它来检索您的值。
假设btnNext在你的活动中,你只需要打电话
getString(R.string.cutString)
,结果应该是字符串的值。
请参阅http://developer.android.com/reference/android/content/Context.html#getString(int)
答案 5 :(得分:0)
为什么不返回资源ID(R.string.cutString),然后使用TextView.setText(int resid)
来设置文本,而不是从getMyString()
返回一个字符串。基本上,您应该只将getMyString()
的返回类型更改为int
,并将switch
语句的返回值更改为以下内容:
public int getMyString(int variable){
switch(variable){
case 1:
return R.string.YOUR_STRING_01;
break;
case 2:
return R.string.YOUR_STRING_02;
break;
case 3:
return R.string.YOUR_STRING_03;
break;
}