2

单击下一个按钮时,我正在使用以下代码更新图像切换器和相应的字符串,但是我无法从 .res/strings 文件夹中引用字符串GetMyString()

例如,我的一个字符串被命名为 。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;
            }
4

6 回答 6

4

所以我注意到你的实现不一定要引用上下文,所以你需要做这样的事情。

//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;
        }

    }
于 2013-11-11T23:01:28.713 回答
2

您可以通过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) 将保留应用于字符串的任何富文本样式。

于 2013-11-11T22:47:39.830 回答
0

使用String str = getResources().getString(R.string.cutString);String str = getString(R.string.cutString);

这两个选项都是Context- http://developer.android.com/reference/android/content/Context.html

于 2013-11-11T22:46:14.730 回答
0

您使用R类将您的字符串作为任何其他资源引用,即:

R.string.cutString;

要获得价值,请使用getString()

String text = getResources().getString(R.string.cutString);
于 2013-11-11T22:46:22.290 回答
0

从 Context 类继承的每个类都有一个名为 getString 的方法,您可以使用它来检索您的值。

假设 btnNext 在您的活动中,您只需调用

getString(R.string.cutString)

结果应该是你的字符串的那个值。

http://developer.android.com/reference/android/content/Context.html#getString(int)

于 2013-11-11T22:49:35.147 回答
0

与其从 中返回字符串getMyString(),不如返回资源 ID(R.string.cutString),然后用于TextView.setText(int resid)设置文本。本质上,您应该将 to 的返回类型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;
        }    
于 2013-11-11T22:58:09.847 回答