方向改变时保持价值

Preserving Value When Orientation Changes

我正在开发一个非常基本的 Android 应用程序,每当我点击 按钮 时,它就会在 TextView 中添加一个数字。当使用 onSaveInstanceState() 移动设备的方向更改 时,TextView 中显示的数字也会被保留和 onRestoreInstanceState() 函数。

问题是当方向改变保留 但当 按钮在改变方向后再次按下时,它会再次从 0 开始计数,而不是从保留的值开始计数。

我的代码:

public class MainActivity extends AppCompatActivity {

    TextView showValue;
    int counter=0;

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

        showValue = (TextView) findViewById(R.id.CounterValue);
    }


    public void countIN(View view)
    {
        counter++;
        showValue.setText(Integer.toString(counter));
    }


    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putString("my_text", showValue.getText().toString());
        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        showValue.setText(savedInstanceState.getString("my_text"));
    }
 }

感谢您的回复。

添加

counter=Integer.parseInt(savedInstanceState.getString("my_text"));

onRestoreInstanceState 方法内部

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    showValue.setText(savedInstanceState.getString("my_text"));
    counter=Integer.parseInt(savedInstanceState.getString("my_text"));
}

您可以使用多种方法保存和获取数据

首先 如果你的数据很小,那么你可以使用onSavedInstanceStateonRestoreInstanceState ..详情请看this answer or this one

其次如果你要存储的数据太多,那就用ViewModel代替; this 是您可以从中开始的教程。