Android——Bundle数据暂存之实现记忆输入内容 自动填充、补全

原文地址:http://blog.csdn.net/xuejingfu1/article/details/51603172

有这样的一个需求:输入账号密码后,正要点击登陆时,突然来了一个电话,或者你突然想要处理一些其他更重要的操作,而当前软件的当前Activity也因此被迫进入pause状态,等你处理完再回到刚才的界面时,发现输入的账号密码不见了,此时你是不是有点气愤?

那么,现在教你怎么暂存数据到Bundle !

废话不多说,直接上代码:


这里用的表格布局:

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:stretchColumns="1"  
  7.     tools:context="xjtu.com.testsharedpreferences.MainActivity">  
  8.         <TableRow>  
  9.             <TextView  
  10.                 android:text="邮箱:"/>  
  11.             <EditText  
  12.                 android:id="@+id/et1"  
  13.                 android:inputType="textEmailSubject" />  
  14.         </TableRow>  
  15.   
  16.         <TableRow>  
  17.             <TextView  
  18.                 android:text="电话:"/>  
  19.             <EditText  
  20.                 android:id="@+id/et2"  
  21.                 android:inputType="phone" />  
  22.         </TableRow>  
  23.   
  24.         <Button  
  25.             android:text="注册" />  
  26.     </TableLayout>  
这是代码:

[java]  view plain  copy
 print ?
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.widget.EditText;  
  4.   
  5. public class MainActivity extends Activity {  
  6.   
  7.     private EditText et1,et2;  
  8.   
  9.     @Override  
  10.     protected void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.activity_main);  
  13.         initView();  
  14.     }  
  15.   
  16.     private void initView(){  
  17.   
  18.         et1=(EditText)findViewById(R.id.et1);  
  19.         et2=(EditText)findViewById(R.id.et2);  
  20.     }  
  21.   
  22.     @Override  
  23.     protected void onSaveInstanceState(Bundle outState) {  
  24.         super.onSaveInstanceState(outState);  
  25.         outState.putString("et1",et1.getText().toString());  
  26.         outState.putString("et2",et2.getText().toString());  
  27.     }  
  28.   
  29.     @Override  
  30.     protected void onRestoreInstanceState(Bundle savedInstanceState) {  
  31.         super.onRestoreInstanceState(savedInstanceState);  
  32.         et1.setText(savedInstanceState.getBundle("et1").toString());  
  33.         et2.setText(savedInstanceState.getBundle("et2").toString());  
  34.   
  35.     }  
  36.   
  37. }  


首先声明一下,Bundle也是用键值对的形式来保存数据的,这一点跟 SharedPreferences 很相似!

这里用到两个重要的方法

onSaveInstanceState(Bundle outState)保存数据到Bundle
在该方法体内写保存数据到Bundle对象的逻辑
onRestoreInstanceState(Bundle savedInstanceState)从Bundle恢复数据
在该方法体内写从Bundle对象恢复数据的逻辑
注意:Bundle只是暂存数据,在点击back退出软件后,再次登陆时数据已经被清除。
如果你想实现数据的持久化,有三种方式:
1.文件;2.SQLite数据库 3.SharedPreferences 作者认为这种方式是最好用的,也是足够强大的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值