我有一个按钮,当点击时,里面的文字会发生变化。我试图用strings.xml中的数组完成此操作,认为onClick将通过字符串数组执行for循环
<string-array name="RG_answers">
<item>text 1</item><!--Of course this is example text-->
<item>text 2</item>
<item>text 3</item>
</string-array>
我不知道我是不是谷歌搜索不正确,或者是什么。在我的onCreate()
内,我的按钮是基本的
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
如此基本,只有提供我称之为的名称才有用(如果有的话)。有可能/可行吗?根据我的发现,我还没有看到有人问这样的问题。
答案 0 :(得分:1)
是否可以循环遍历字符串数组?
是的,使用button.setText(text);
更改按钮文本。将计数器保留为全局变量,以便循环显示您提到的“按钮文本”列表。
例如:button.setText(array[index]);
答案 1 :(得分:0)
您需要三个步骤:
//1 Declare an index outside onClick:
int currentIndex=0;
//2- Read the answers:
Resources res = getResources();
myStrings = res.getStringArray(R.array.RG_answers);
//3- iterate thru them inside onClick:
mTrueButton.setText(myStrings[(currentIndex++)%(myStrings.length)]);
答案 2 :(得分:0)
像这样。
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] btnText = getResources().getStringArray(R.array.RG_answers);
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTrueButton.setText(btnText[count]);
if (count < btnText.length - 1) {
count++;
} else {
count = 0;
}
}
});
}