每次从strings.xml中定义的一组字符串中按下按钮时,我都会尝试显示一个随机字符串。这是字符串ID的示例
<string name="q0">
<string name="q1">
<string name="q2">
<string name="q3">
<string name="q4">
获取随机字符串的java代码。
private static final Random rgenerator = null;
int RandomQ = R.string.q0 (rgenerator.nextInt(5) + 1);
String q = getString(RandomQ);
如果我尝试使用这个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!
感谢阅读。
答案 0 :(得分: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>
然后,您可以创建一个数组来保存字符串,并从要使用的数组中选择一个随机字符串:
private String[] myString;
myString = res.getStringArray(R.array.myArray);
String q = myString[rgenerator.nextInt(myString.length)];
示例代码:
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);
}
}
答案 1 :(得分:2)
在res / values / array.xml中创建字符串数组:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="custom_array">
<item>aalia</item>
<item>asin</item>
<item>sonakshi</item>
<item>kajol</item>
<item>madhuri</item>
</string-array>
</resources>
然后在你的活动中编写代码
String[] array = context.getResources().getStringArray(R.array.custom_array);
String randomStr = array[new Random().nextInt(array.length)];
text_dialog.setText(""+randomStr);
答案 2 :(得分:-2)
你为什么需要这个?
R.string.q0
假设getString(RandomQ)
是一个有效的陈述,我会认为
int RandomQ = rgenerator.nextInt(5) + 1;
会工作得很好。
另外,作为旁注:很多时候IDE中的自动修复程序不可靠且使用不安全。除非你知道它为什么要告诉你做某事,否则不要这样做。