显示随机字符串

zai*_*aid 3 android

每次从strings.xml中定义的一组字符串中按下按钮时,我都会尝试显示一个随机字符串.这是字符串ID的示例

<string name="q0">
    <string name="q1">
    <string name="q2">
    <string name="q3">
    <string name="q4">
Run Code Online (Sandbox Code Playgroud)

用于获取随机字符串的java代码.

private static final Random rgenerator = null;

    int RandomQ = R.string.q0  (rgenerator.nextInt(5) + 1);
    String q = getString(RandomQ);
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用这个java代码我在R.string.q0中的"q0"得到一个错误,The method q0(int) is undefined for the type R.string如果我尝试使用快速修复并创建一个方法,它的工作原理.但它不会让我保存或运行应用程序,因为它取代了我的创建方法并显示此消息

R.java was modified manually! Reverting to generated version!
Run Code Online (Sandbox Code Playgroud)

谢谢阅读.

ste*_*ter 21

您可以在数组中定义字符串,这将有助于简化此任务(res/values/array.xml):

<string-array name="myArray"> 
    <item>string 1</item> 
    <item>string 2</item> 
    <item>string 3</item> 
    <item>string 4</item> 
    <item>string 5</item>
</string-array> 
Run Code Online (Sandbox Code Playgroud)

然后,您可以创建一个数组来保存字符串,并从要使用的数组中选择一个随机字符串:

private String[] myString; 

myString = res.getStringArray(R.array.myArray); 

String q = myString[rgenerator.nextInt(myString.length)];
Run Code Online (Sandbox Code Playgroud)

示例代码:

package com.test.test200;

import java.util.Random;

import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TextView;

public class Test extends Activity {
/** Called when the activity is first created. */

    private String[] myString;
    private static final Random rgenerator = new Random();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    Resources res = getResources();

    myString = res.getStringArray(R.array.myArray); 

    String q = myString[rgenerator.nextInt(myString.length)];

    TextView tv = (TextView) findViewById(R.id.text1);
    tv.setText(q);
}
}
Run Code Online (Sandbox Code Playgroud)