java - 当我旋转 Android 设备时,XML 变回 main.xml

标签 java android

我正在编写一个 Android 应用程序。我有两个重要的 XML 文件 - main.xml 和 new.xml。这是我的 Java Activity 源代码:

// package declarations, imports, etc

public class MainActivity extends Activity {
    @Override
    public void onCreate(savedInstanceState) {
        super.onCreate(savedInstancestate);
        setContentView(R.layout.main);
    }

    // as you can see, the content of the initial layout is found in main.xml
    // I want to change the layout so it has the content of new.xml (when I press a button)

    public void ButtonAction(View view) {
        setContentView(R.layout.new);
    }
}

事情是这样的:在我的 main.xml 文件中,有一个按钮。正如 main.xml 文件中所述,当我按下该按钮时,它会调用 ButtonAction 方法。当按下按钮并调用ButtonAction时,我想将布局的内容更改为new.xml的内容。

上面的代码可以工作,但只是有点 - 它不是永久的。当我旋转设备时,它似乎会使用 main.xml 的内容刷新 Activity 。因此,我可以让它执行我想要的操作,但是当我旋转设备并以横向布局而不是典型的纵向布局查看它时,它会恢复。

如何解决这个问题?

最佳答案

当您旋转屏幕时,整个 Activity 将被销毁并从头开始,包括使用 setContentView(R.layout.main); 调用 onCreate()。您应该将最后选择的布局存储在变量中并加载该变量:

setContentView(lastLayout);

您需要重写 onSaveInstanceState()onRestoreInstanceState() 以记住应用运行时的布局选择。此方法只是暂时的,因为当应用程序关闭时此状态会丢失。
否则,您可以使用 SharedPreferences(或类似的数据库或通用文件)来记住多个 session 中的布局选择。

关于java - 当我旋转 Android 设备时,XML 变回 main.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349634/

相关文章:

android - 打算在 fragment 类中

java - 我可以在不同的 jre 实现中使用 java keytool 生成的 keystore 吗

java - 从 JavaFX 插入 MySQL

javascript - Android Native 浏览器中上传的空文件

android - 在 IntelliJ 中构建时 Unresolved maven android 依赖项

iphone - iphone/android 特定的 Web 功能是什么?

java - Spring Data REST - 当 PATCH 在请求正文中使用空数组发送时出现异常

java - 使用 Spark 展平嵌套 json 文档并加载到 Elasticsearch 中

java - Head First Java,第 16 章,Be The Compiler 练习查询

java - 从 PreferenceActivity 启动 android Play Store 应用程序?