java - 在纵向和横向之间翻转时随机生成的单词会发生变化

标签 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>

这是我的 Java 代码,没有导入语句。

public class Study extends Activity {

    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 tv = (TextView) findViewById(R.id.word);
        tv.setText(q);

    }
}

它将 array.xml 中的随机项显示到 ID 为 word 的 TextView 中。一切都很顺利。直到我从纵向切换到横向,反之亦然,然后它会显示另一个随机项目。当我来回切换时,我希望它保留最初显示的相同项目。我该怎么做?

最佳答案

改变方向实际上会杀死 Activity 并启动一个新的 Activity。因此,在您的情况下,再次调用 onCreate() 并再次生成随机单词。

onCreate()onDestroy() 中添加一些 Log.i("created/destroyed") 即可看到这一点。

关于java - 在纵向和横向之间翻转时随机生成的单词会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112342/

相关文章:

java - 压入并评估堆栈 <double>

perl - 在 Perl 中,如何将字节数组转换为 Unicode 字符串?

ios - Swift:按字母顺序对对象数组进行排序

opengl-es - Android,使用 NDK 优雅地关闭 OpenGL?

java - Ubuntu Java JDK Artifact 丢失

java - Cassandra 节点工具: Failed to connect to '127.0.0.1:7199'

java - 外部化 Grails 应用程序的运行配置

C++:无法在使用条件类型的模板函数中使用类型为 'char*' 的左值初始化类型为 'double' 的参数

Android 启动器图标 - 我的默认/mdpi 资源是否多余?

.net - 字符串资源 (.resx) 属性是否保存在内存中?