我对Android编程非常陌生!
我想做一些非常简单的事情:
if(i < 1)
System.out.println("Ja");
else
System.out.println("Nein");
要实现这一点,我的第一个想法是在xml中创建一个带有字符串资源的TextView:
<TextView
android:id="@+id/mytextview"
android:text="@string/Entscheidung"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然后通过Java代码访问该资源:
R.string.Entscheidung = "Ja";
但它不起作用:错误:(13,17)错误:无法为最终变量Entscheidung赋值
有没有其他方法可以做到这一点?
谢谢!
发布于 2018-02-06 01:01:11
首先,我想澄清字符串资源的概念以及它们是如何使用的。对于常量字符串值(在本例中为“Ja”和"Nein“),您可以在res/values
文件夹中名为strings.xml
的文件中定义这些值。举个例子:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="antwort_ja">Ja</string>
<string name="antwort_nein">Nein</string>
</resources>
这些值是在编译时最终确定的,因此可以在整个应用程序中用作常量。对于XML布局文件,是的,您可以使用@string/
前缀引用这些字符串资源。然而,在Java代码中,您只能使用带有R.string
前缀的getString()
方法来引用这些值。因为这些R.string
值是final
,所以它们不能在运行时更改,因此您会得到错误。在你的例子中,你的代码应该是:
// I'm assuming you have this declared in onCreate()
TextView myTextView = (TextView)findViewById(R.id.mytextview);
if (i < 1) {
myTextView.setText(getString(R.string.antwort_ja));
} else {
myTextView.setText(getString(R.string.antwort_nein));
}
这也假设你是从你的活动中调用它的。如果不是,则可能需要从context.getString(R.string.antwort_ja);
等Context
实例中调用它
发布于 2018-02-05 23:53:08
strings.xml
文件:
<string name="firststring">Hello World</string>
<string name="secondtring">Welcome</string>
活动或片段:
textView.setText(i < 1 ? getResources().getString(R.string.firststring) : getResources().getString(R.string.secondtring));
发布于 2018-02-06 01:01:46
首先声明您的TextView变量
private TextView mTextView;
在onCreate中
mTextView = (TextView) findViewById(R.id.mytextview);
在此之后,您可以使用它
if(i < 1)
System.out.println("Ja");
else
System.out.println("Nein");
可以使用您的TextView完成以下操作
if(i < 1)
mTextView.setText(getString(R.String.myJaText);
else
mTextView.setText(getString(R.String.myNeinText);
在Strings.xml中,您可以编写要在文本字段中使用的文本。
您可以在Res - Values
中找到Strings.xml
<string name="myJaText">Ja</string>
<string name="myNeinText">Nein</string>
https://stackoverflow.com/questions/48626315
复制相似问题