Java 在纵向和横向之间翻转时,随机生成的单词会发生变化
我在Java 在纵向和横向之间翻转时,随机生成的单词会发生变化,java,arrays,resources,random,orientation,Java,Arrays,Resources,Random,Orientation,我在res/values/array.xml中有一个数组 <string-array name="list"> <item>string 1</item> <item>string 2</item> <item>string 3</item> </string-array> 它将array.xml中的随机项显示到id为word的文本视图中。一切顺利。直到我从纵向切换到横向,或
res/values/array.xml
中有一个数组
<string-array name="list">
<item>string 1</item>
<item>string 2</item>
<item>string 3</item>
</string-array>
它将
array.xml
中的随机项显示到id为word的文本视图中。一切顺利。直到我从纵向切换到横向,或者从横向切换到纵向,它才会显示另一个随机项。当我来回切换时,我希望它保持原来显示的相同项目。我该怎么做呢?改变方向实际上会终止活动并开始新的活动。因此,在您的情况下,再次调用onCreate()
,并再次生成随机字
在您的
onCreate()
和onestroy()中放置一些Log.i(“创建/销毁”)
,以查看这一点。最终找到了答案。我需要onSaveInstanceState()来查找并存储字符串,然后需要onRestoreInstanceState()在活动重新启动后将其显示在正确的位置。这是代码,衷心感谢您的帮助
公共课堂学习拓展活动{
private String[] myString;
public static final Random rgenerator = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.study);
Resources res = getResources();
myString = res.getStringArray(R.array.list);
String q = myString[rgenerator.nextInt(myString.length)];
TextView word = (TextView) findViewById(R.id.word);
word.setText(q);
}
public void onSaveInstanceState(Bundle savedInstanceState) {
TextView wordTextView = (TextView)findViewById(R.id.word);
String wordText = wordTextView.getText().toString();
savedInstanceState.putString("wordText", wordText);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
TextView wordTextView = (TextView)findViewById(R.id.word);
String wordText = savedInstanceState.getString("wordText");
wordTextView.setText(wordText);
}
}我还没有太多android开发经验,我该怎么做呢?只需将Log.I(“MyActivity created”)
放入您的onCreate(…)
方法中即可。然后看看android日志,你必须导入android.util.log代码>嗯,小错误。用法是Log.i(“MyActivity”,“created”)
i尝试了super.onCreate(Log.i(“MyActivity”,“created”);我得到了同样的错误,然后把它放在我也得到同样错误的地方。还有什么需要进去的吗?
private String[] myString;
public static final Random rgenerator = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.study);
Resources res = getResources();
myString = res.getStringArray(R.array.list);
String q = myString[rgenerator.nextInt(myString.length)];
TextView word = (TextView) findViewById(R.id.word);
word.setText(q);
}
public void onSaveInstanceState(Bundle savedInstanceState) {
TextView wordTextView = (TextView)findViewById(R.id.word);
String wordText = wordTextView.getText().toString();
savedInstanceState.putString("wordText", wordText);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
TextView wordTextView = (TextView)findViewById(R.id.word);
String wordText = savedInstanceState.getString("wordText");
wordTextView.setText(wordText);
}