像默认欢迎语,登录的用户名和密码等存储信息量小时,可以以键值对的方式存储,即SharedPreference存储,使得我们很方便的存入和读取
效果图:
当按返回键后,再次启动后,上一次输入的姓名和密码仍显示
布局代码:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/name" />
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/password" />
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true" />
</LinearLayout>
MainActivity.java代码
package cn.bzu.sharedpreference;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.view.Menu;
import android.widget.EditText;
public class MainActivity extends Activity {
public static final String SETTING_INFOS="SETTING_Infos";
public static final String TAG="MainActivity";
private EditText nameText;// 接受用户名组件
private EditText passwordText;// 接受密码组件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//一旦文件存在,第2个参数是没有意义的
nameText = (EditText) this.findViewById(R.id.name);
passwordText = (EditText) this.findViewById(R.id.password);
Log.i(TAG,"onCreate()");
SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, MODE_PRIVATE);
String name = sharedPreferences.getString("name", "");//默认值为空
String password = sharedPreferences.getString("password","");
if(name!=null&&!"".equals(name)){
nameText.setText(name);
}
if(password!=null&&!"".equals(password)){
passwordText.setText(password);
}
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG,"onStop()");
String name = nameText.getText().toString();
String password = passwordText.getText().toString();
// 第1个参数指定保存参数的XML文件的名称,不需要加后缀
// 第2个参数指定操作模式,只能被本应用所访问
SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, Context.MODE_PRIVATE);
Editor editor=sharedPreferences.edit();
editor.putString("name", name);
editor.putString("password", password);//此时数据保存在内存中
editor.commit();//永久的保存到xml文件中,减少频繁的文件操作,提高性能。
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}