如何在 android 中保存布局的实例状态

How to save instance state of a Layout in android

我有一个 activity 和 5 个布局。 在 onCreate 中,我为起始页面布局设置了 ContentView,然后通过一个按钮跳到另一个布局。当我旋转屏幕时出现问题。它返回到开始页面。当我旋转屏幕时,我必须做什么才能保持相同的布局? 这就是我在 onCreate 中的内容:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(**R.layout.activity_main**);

通过单击开始按钮,它会转到第一种方法:

public void firstQuestion(View view) {
    //here we change the layout. it will be the same for every new question
    setContentView(**R.layout.first_question**);

.....一些代码然后

 final ImageView forward = (ImageView) findViewById(R.id.forward);
    forward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (time_is_up) resultsDialog(view);//if time is up we jump to results
            else secondQuestion(view);          //if not we skip to the next question
        }
    });

那么第二个问题:

public void secondQuestion(View view) {
    setContentView(**R.layout.second_question**);

等等。

您可以保存最后的 Activity 状态并在重新创建 activity 时重复使用它:

int layoutId = R.layout.activity_main;

@Override
public void onSaveInstanceState(Bundle outState) {
   outState.putInt("layoutId", layoutId);
   super.onSaveInstanceState(outState);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        layoutId = savedInstanceState.getInt("layoutId", R.layout.activity_main);
    }
    setContentView(layoutId);
}

public void firstQuestion(View view) {
    layoutId = R.layout.first_question;
    setContentView(layoutId);
}