我正在编写一个 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/