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);
}