当我们编辑到一半,不小心跳转到别的界面,然后点击按返回。这时,如果你之前编辑的东西全都不见了,你会不会很奔溃?用Bundle,可以解决这个问题。
首先,你需要有两个Activities ,这里,我们一个为MainActivity,另外一个我们叫ThirdActivity.不要问我为什么不用SecondActivity.为什么原因,纯属我乐意。
MainActivity的LayOut如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff" tools:context=".MainActivity"> <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Dialog" android:textColor="#000000" android:textSize="28dp"/> <EditText android:id="@+id/edt" android:layout_width="match_parent" android:layout_height="wrap_content" android:minLines="3" android:maxLines="3" android:textColor="#000000" android:textSize="15dp" android:textColorLink="#707070" android:hint="请输入......" android:gravity="top"/> </LinearLayout>
ThirdAcitivity的Layout我就不放了,因为只是单纯的演示,跳到这个界面再返回,看看保存的数据在不在而已。
接下来看一下MainAcitivity的代码要怎么写:
public class MainActivity extends AppCompatActivity { private Button btn_1; private EditText edt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_1 = findViewById(R.id.btn); edt = findViewById(R.id.edt); if(savedInstanceState != null){ String tempData = savedInstanceState.getString("temp_data") ; edt.setText(tempData); } btn_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,ThirdActivity.class); startActivity(intent); } }); } @Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); String tempData = "Save something you want to save"; outState.putString("temp_data",tempData); } }