5.2.1 需求分析效果图

android13 SharedPreferences存储 android sharedpreferences存放位置_ANDROID

5.2.2 设计思路与步骤

1. 首先布局,不多说。三个TextView、三个EditText、一个Button搞定。各id不用,三个EditText必须用id,而按钮在main.xml中要注册个onClick事件即可。

2. 关键是如何让应用程序一开始就可以显示上次,保存成功的设置的值呢?如何又将本次修改设置的新值保存起来呢?显然需求个SharedPerferences对象,而此对象肯定也是与手机应用文件相关(实际文件是存放在/data/data/包名/shared_prefs文件夹下),那么可以通过Context对象的getSharedPerferences(“文件名”,应用MODE模式)获取SharedPerferences对象。

3. 有了此对象后,那么我们可以在activity类的onCreate方法中,将各控件中的值设置为从sp.getString(“key”)中读取的值。那么还有个问题是如何保存本次修改的值。

4. 通过按钮中注册的onClick方法,将分别以上三个EditText中的值,将用sp.getEditor获取的Editor对象editor,editor.putString(“key”,”value”),最后再用editor.commit下就Ok了。

4.1 在程序中保存一些配置参数的时候我们经常使用SharedPreferences

Context.getSharedPreferences(String name,int mode)

该方法可以在/data/data/<package>/shared_pref/目录下创建一个以name命名的xml文件,mode文件为模式

4.2 存储偏好

调用edit()方法可以获取一个Editor对象,对数据进行存储,存储之后需要调用commit()保存到文件

4.3读取偏好

获得SharedPreferences之后调用getString()、getInt()等方法获取其中设置的值

4.4在Activity中获取SharedPreferences

在Activity中可以调用getPreferences(int mode)方法获得一个SharedPreferences,文件名和Activity名一致

5.2.3 SharedPerferences的示例代码

package
import
import
import
import
import
import
import
import
public class MainActivity extends
private EditText nameET;
private EditText phoneET;
private EditText emailET;
private SharedPreferences sp;
@Override
public void
super.onCreate(savedInstanceState);
main);
sp = getSharedPreferences("qq", Context.MODE_PRIVATE);
        
nameET = (EditText)findViewById(R.id.name);
phoneET = (EditText)findViewById(R.id.phone);
emailET = (EditText) findViewById(R.id.email);
        
//一开启一个Activity就把SharedPerferences中的内容读取出来,放入到相应的位置中去。
nameET.setText(sp.getString("name", ""));
phoneET.setText(sp.getString("phone", ""));
emailET.setText(sp.getString("email", ""));
    }
    
/**
     * 每次点击时,将内容获取出来并保存到SharedPerferences中去。
     * @param view
     */
public void
try
String name = nameET.getText().toString();
String phone = phoneET.getText().toString();
String email = emailET.getText().toString();
//保存起来需要先获取Editor对象。
Editor editor = sp.edit();
editor.putString("name", name);
editor.putString("phone", phone);
editor.putString("email", email);
editor.commit(); //存放后,需要提交。
Toast.makeText(this, "保存成功", 0).show();
} catch
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
     
    }
    
}