国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android學習小結之Activity保存和恢復狀態

2019-12-12 05:41:46
字體:
來源:轉載
供稿:網友

Android中啟動一個Activity如果點擊Home鍵該Activity是不會被銷毀的,但是當進行某些操作時某些數據就會丟失,如下:

Java class:

package com.king.activitytest2;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private EditText editText;private Button buttonSet,buttonRead;//定義一個常量double pai;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//獲取控件editText=(EditText)findViewById(R.id.edit1);buttonSet=(Button) findViewById(R.id.btn_Set);buttonRead=(Button) findViewById(R.id.btn_Read);//設置監聽事件buttonSet.setOnClickListener(this);buttonRead.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btn_Set:editText.setText("圓周率為:");pai=3.141592654;break;case R.id.btn_Read:String str=editText.getText().toString()+pai;Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();break;}}}

xml布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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"tools:context="com.king.activitytest2.MainActivity"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/edit1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="設置"android:id="@+id/btn_Set"android:layout_marginTop="46dp"android:layout_below="@+id/edit1"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_marginLeft="35dp"android:layout_marginStart="35dp" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="讀取"android:id="@+id/btn_Read"android:layout_alignTop="@+id/btn_Set"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"android:layout_marginRight="46dp"android:layout_marginEnd="46dp"/></RelativeLayout>

這里在程序中定義了一個double類型的變量,當我們點擊讀取按鈕時會將該變量的值加在后面并顯示,打開程序然后進行操作,一切正常:

我們點擊設置之后將屏幕橫過來,咦,pai跑哪去了?

其實這里當我們進行橫豎屏切換時,迫于系統機制,該Activity已經被銷毀了。但是為什么這個頁面還存在呢,這是因為這個銷毀并不是用戶去主動退出,所以Android系統實現了這些狀態的保存功能,但是一些數據達不到被保留的要求,并沒有被保留,就像程序中可憐的pai就被拋棄了!

那我們需要在像這種橫豎屏切換過程中保留數據該如何做呢,這里我們就需要重寫onSaveInstanceState()方法:

@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//將需要保存的數據放入Bundle中outState.putDouble("pai",pai);}

保存解決了,那我們如何取出呢?很簡單,只需要在onCreate()方法中判斷其參數是否為null,不為null便將其取出。

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//將pai保存if(savedInstanceState!=null)pai=savedInstanceState.getDouble("pai");}

現在我們可以看到屏幕切換之后pai也沒有被銷毀。

以上所述是小編給大家介紹的Activity保存和恢復狀態,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄢陵县| 铜川市| 临朐县| 盐城市| 邢台市| 英山县| 依安县| 剑河县| 海城市| 浮梁县| 合阳县| 冀州市| 成安县| 阜康市| 沙田区| 吴堡县| 四会市| 芜湖县| 海原县| 尉氏县| 中阳县| 团风县| 临洮县| 靖宇县| 东莞市| 新晃| 青冈县| 广宁县| 堆龙德庆县| 宿松县| 沙河市| 仁寿县| 临桂县| 邵武市| 鸡泽县| 宿迁市| 定陶县| 大足县| 青海省| 莒南县| 搜索|