SharePReferences保存的数据主要是类似配置信息格式的数据,因此他保存的数据只要是简单类型的key-value对。 SharePreferences接口主要负责读取应用程序的 Preferences 数据,他提供了如下来访问SharedPreferences中的key-value对
boolean contains(String key)//:判断SharePreferences是否包含特定key的数据。 abstract Msp<String,?>getAll()//:获取SharePreferences数据里全部的key-value对。 boolean getXxx(String key,xxx defValue) //获取SharePreferences数据里指定key对应的value.如果该key 不存在,则返回默认值defValue,其中xxx可以是boolean ,float,int,long,string等各种基本类型的值。SharePreferences本身没有提供写入数据的能力,而是通过SharePreferences的内部接口,SharePreferences调用edit()方法即可获得它所对应的Editor对象,Editor提供了如下方法来向SharePreferences写入数据
SharePreferences.Editor clear()//清空SharePreferences里所有数据SharePreferences.Editor putXxx(String key,xxx value)//向SharePreferences存入指定的key对应的数据SharePreferences.Editor remove(String key)//删除SharePreferences里指定的key所对应的数据boolean commit()//当Editor编辑完成后,调用该方法提交修改。SharePreferences本身只是一个接口所以不能通过new 直接创建 只能通过Context提供的getSharePreferences(String name,int mode) 方法来获取SharePreferences实例。 其中mode的参数有下面几种: MODE_PRIVATE:指定该SharePreferences数据只能被本应用程序读写。 MODE_WORLD_READABLE:指定该SharePreferences数据能被其他应用程序读,但是不能写。 MODE_WORLD_WRITEABLE:指定该SharePreferences数据能被其他应用程序读写
import android.annotation.TargetApi;import android.content.SharedPreferences;import android.icu.text.SimpleDateFormat;import android.os.Build;import android.support.annotation.RequiresApi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import java.util.Date;public class MainActivity extends AppCompatActivity { SharedPreferences sharedPreferences; SharedPreferences.Editor editor; private int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 sharedPreferences=getSharedPreferences("crzyity",MODE_PRIVATE); editor=sharedPreferences.edit(); Button read=(Button)findViewById(R.id.read); Button write=(Button)findViewById(R.id.write); read.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //读取字符串 String time=sharedPreferences.getString("time",null); int randNum=sharedPreferences.getInt("rand",0); String result=time==null ? "暂时还没有数据":"写入的时间为:"+time+"/n上次的" + "随机数是:"+randNum; Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show(); } }); write.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { i++; TextView textView=new TextView(MainActivity.this); LinearLayout linearLayout=(LinearLayout)findViewById(R.id.activity_main); textView.setText("你好呀"+i); linearLayout.addView(textView); editor.putString("time","你好+++++++"+textView.getText().toString()); editor.putInt("random",(int)(Math.random()*100)); editor.commit(); } }); Button button_1=new Button(MainActivity.this); button_1.setText("清除"); button_1.setHeight(2); button_1.setWidth(1); LinearLayout layout=(LinearLayout)findViewById(R.id.activity_main); layout.addView(button_1); button_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { editor.remove("time"); editor.commit(); } }); }}新闻热点
疑难解答