2 zxd 72 zxd_72 于 2012.11.02 17:46 提问

Android中程序化加载字符串数组

我有一个类StringsA,在这个类中有一个字符串列表。

public class StringsA {

static String Names[] = {"Larry", "Moe", "Curly", "John"};  

}

在主类中有一个button和textview。我想实现的是每次当按钮被点击时,textview能用.setText从字符串中调用一个不同的名字。例如,现在的名字是Moe,当点击按钮后,textview的名字变成 John。名字的变化是随机的,没有顺序。

setContentView(R.layout.main);
    Button a = (Button) findViewById(R.id.button1);
    TextView b = (TextView) findViewById(R.id.tv);        

    Resources i = getResources();
    i.getResourceName(StringsA.Names);

    a.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {               

        }
    });
}

在i.getResourceTypeName处出错。如何点击按钮改变textview里的字符串名称?

3个回答

nana4ever
nana4ever   2012.11.05 10:05
已采纳

充分利用Android资源,从strings.xml的字符串数组中加载一个值。例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>

然后:

 private static final Random RAND = new Random();

  public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.main);
    Button myButton = (Button) findViewById(R.id.button1);
    TextView myTextField = (TextView) findViewById(R.id.tv);     

    final String[] values = getResources().getStringArray(R.array.planets_array);
    myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {     
          String nextValue = values[RAND.nextInt(values.length)]          
          myTextField.setText(nextValue);
        }
    });
  }
ta893115871
ta893115871   2012.11.04 00:42

这个还不简单,

int readomIndex = (int)(Math.random() * 3);
 b.setText(StringsA.Names[readomIndex]);

//下面这两句就不要了
Resources i = getResources();
    i.getResourceName(StringsA.Names);

这两句一般是用.xml中的资源,但一般也不是你这样用的。
eg获取.xml中的字符串

eg:String s=getResources().getString(R.string.resource_name);

注意:
01.方法一:this.getString(R.string.resource_name);

02.方法二:getResources().getString(R.string.resource_name);

03在其他java文件(必须有Context或application)

ta893115871
ta893115871 呵呵,不用谢
大约 5 年之前 回复
zxd_72
zxd_72 非常感谢你提供的这几种方法!
大约 5 年之前 回复
franzhong
franzhong   2012.11.02 19:16
int readomIndex = (int)(Math.random() * 3);
b.setText( Names[readomIndex]);

在onClick中加上两句试一下

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!