Acticity之重新创建时保存编辑值
假如点击按钮EditText的值就会增加,那么在屏幕旋转的时候,会重新创建Activity,那么之前编辑框的值也就不会相应保存
例如,我在竖屏的时候点击结果为:
当我切换到横屏模式的时候,再点击按钮,结果为:
这个时候值重新变为1了。那是因为屏幕切换时默认情况下会重新创建Activity,为了保存当前Activity的状态,我们可以重写onSaveInstanceState方法来保存相关的数据,然后在onCreate方法中还原数据
下面看代码,先看界面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/edt_indexNum"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_change"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击增加EditText的值" />
</LinearLayout>
再看看Activity代码
package com.shake.day13_android_2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private int index;
private EditText edt_indexNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_change).setOnClickListener(this);
edt_indexNum= (EditText) findViewById(R.id.edt_indexNum);
/**
* 还原数据
*/
if (savedInstanceState!=null){
index=savedInstanceState.getInt("index",0);
}
}
@Override
public void onClick(View v) {
index++;
edt_indexNum.setText(String.valueOf(index));
}
/**
* 保存数据
* @param outState
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("index",index);
}
}
这个时候我在竖屏的时候点击按钮
再切换到横屏的时候再点击按钮
这个时候就可以实现保存值了