我正在学习android studio,我是一个完整的初学者。我的活动上有一个textview和一个按钮,我希望textview从strings.xml中的数组中获取字符串,并在单击按钮时进行更改。
我尝试了for循环,但它只给出一个值并停止。 这是strings.xml文件。
<resources>
<string name="app_name">myapp</string>
<string-array name="myarray">
<item>Cow</item>
<item>Pig</item>
<item>Bird</item>
<item>Sheep</item>
</string-array>
</resources>
这是mainActivityfile
package com.mlx.myapp;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
Context context = this;
String randomstr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] arrays = context.getResources().getStringArray(R.array.myarray);
final TextView textview = (TextView) findViewById(R.id.textview);
for (int i = 0; i < arrays.length; i ++ ) {
randomstr = arrays[i];
}
final Button getrandom = (Button) findViewById(R.id.getrandom);
getrandom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textview.setText(randomstr);
}
});
}
}
现在,当我运行它时,它仅会在单击按钮时显示“绵羊”项,然后它不会改变,但是我希望它在每次按下时都会改变。
答案 0 :(得分:1)
之后,您必须在click方法内定义一个迭代器,并在每次单击时更新此迭代器,以便显示下一个值
公共类MainActivity扩展了AppCompatActivity { 上下文上下文= this; 字符串randomstr; int迭代器= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] arrays = context.getResources().getStringArray(R.array.myarray);
final TextView textview = (TextView) findViewById(R.id.textview);
for (int i = 0; i < arrays.length; i ++ ) {
= arrays[i];
}
final Button getrandom = (Button) findViewById(R.id.getrandom);
getrandom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Read the current value
randomstr = arrays[iterator];
//Display the current value
textview.setText(randomstr);
//Increment the iterator to read the next value
iterator = iterator+1;
//If we reached the length of the array, we reset the iterator
if(iterator >= arrays.length) {
iterator = 0;
}
}
});
}
}