首页 文章

Android屏幕旋转

提问于
浏览
0

我在Android工作室遇到这个特殊问题 . 我制作了这个简单的应用程序,以了解屏幕旋转 . 我理解屏幕旋转时的概念,Activity得到了破坏,并回想起onCreate方法 . 要保存数据,必须通过覆盖onSaveInstanceState方法将其放入Bundle中 . 我制作了一个带有2个按钮和中间数字的应用程序 . 数字将根据点击的按钮而改变 . 但出于某种原因,当我旋转屏幕时,数字会重置,但仍保持屏幕旋转前的值 . 例如,如果我将数字设置为5,并且我旋转屏幕,则数字变为零,但是如果我增加它,它会变为6,如果我减少它变为4.不知何故,它仍保持其值但重置为零,我不知道为什么 . 这是代码

package com.example.android.application;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button upButton, downButton;
    TextView amount;
    int change;
    private static final String banza = "Bundle";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState != null) {
            change = savedInstanceState.getInt(banza);
        }
        upButton = (Button) findViewById(R.id.activity_main_up_button);
        downButton = (Button) findViewById(R.id.activity_main_down_button);
        amount = (TextView) findViewById(R.id.activity_main_textview_id);
        upButton.setOnClickListener(this);
        downButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view == upButton) {
            change++;
            amount.setText(Integer.toString(change));
        }

        if (view == downButton) {
            change--;
            amount.setText(Integer.toString(change));
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt(banza, change);
    }
}

1 回答

  • 0

    你错过了代码

    amount.setText(Integer.toString(change));
    

    onCreate 中,'s why it don' t在旋转时显示值,但在递增或递减时具有正确的值 .

相关问题