如何在Android中以编程方式引用XML文件中的<string>?

8
我是一名新手Android程序员,想要知道以下内容:
我在strings.xml文件中定义了3个字符串: <resources> <string name="one">第一个点击</string> <string name="two">第二个点击</string> <string name="three">第三个点击</string> <resources> 还有一个文本视图,该视图显示在strings.xml文件中的第一个字符串。 当用户点击按钮时,我不想使用settext("******")来更改文本视图的文本。 如何让文本视图切换到已经在strings.xml文件中定义的文本?例如,从第一个点击转换为第二个点击。

2
你不能在没有使用settext("***")的情况下更改TEXTVIEW(动态)的文本,因此你必须这样做... - Niranj Patel
1
TextView如何知道Button被点击了?Button如何知道哪个TextView持有字符串? - Diego Torres Milano
5个回答

16
使用 setText(getResources().getString(R.string.one)); 方法。

非常感谢您。但是,如果在strings.xml文件中指定了很多字符串,是否有一种方法可以使用变量来确定要显示的字符串?例如setText(getResources().getString(R.string.VARIABLE))或类似的东西,以便它可以显示不同的文本。 - thunderson
我听不懂你在说什么,请在这里提供一个小例子。如果您对我的回答满意,请勾选我的答案。 - Android Boy

4

获取应用程序的资源,然后获取所需ID对应的字符串。

getResources().getString(R.string.one);

请问ID可以是一个变量吗?如果不行,我该如何使用变量来确定要打印哪个字符串? - thunderson
ID只是一个整数,它引用由自动编译的R文件指定的内存中的一个点。您可以使用整数变量,但内存中的点很可能会改变,导致字符串混乱。例如,R.string.one在一次运行中可能是0x7f06000b,在下一次运行中可能是0x7c0af0cb。您始终可以使用switch(var){case:}语句。 - Matt Clark

4
为了确定你要使用哪个字符串变量,你需要使用一个switch语句,如下所示。
switch(anyInt) {
    case 1://if the int == 1, then the textview will be set to this
        tv.setText(getResources().getString(R.string.one);
        break;
    case 2://if the into == 2 then the TV will be set to this
        tv.setText(getResources().getString(R.string.two
        break;
    default:
        tv.setText("into does not have value 1-2")
}

您可以添加任意数量的此类语句,我相信即使您有很多语句,它也非常节省内存。


2

如果我理解正确的话,我认为您需要这个。如果我理解有误,请回复我。

试一下这个。

getResources().getString(R.string.app_name);

您只需简单地读取应用程序的资源。您可以通过Resource类的getResources()使用应用程序的任何资源。

现在,您需要从String.xml中读取字符串,因此您可以使用资源的getString()方法,这样您就可以得到您的输出了。


非常感谢您的回复。但是,如果在strings.xml文件中指定了大量字符串,是否有一种方法可以使用变量来确定要显示的字符串?例如setText(getResources().getString(R.string.VARIABLE))之类的东西,以便根据某些用户操作显示不同的文本。 - thunderson
你能举个例子,哪种类型的用户输入可以改变字符串吗?也就是说,有哪些类型的输入会改变我的输出字符串呢? - Chintan Khetiya

-2
这将会给你想要的效果:
yourEditText.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {

        String text = yourEditText.getText().toString();
        if(text.equals(getResources().getString(R.string.one)) {

            yourEditText.setText(getResources().getString(R.string.two)
        } else if(text.equals(getResources().getString(R.string.two)) {

            yourEditText.setText(getResources().getString(R.string.three)
        } else  {

            yourEditText.setText(getResources().getString(R.string.one)
        }
    });

你在问题中读到了这句话吗?我不想使用settext("******")。 - Niranj Patel
为什么你不想使用setText()呢?没有其他方法。 - James McCracken
我想使用一个变量来确定要打印的字符串,即一个变量来确定是否应该打印strings.xml文件中的第一个字符串或最后一个字符串等。 - thunderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接