标签 sharedpreferences 下的文章

SharedPreferences的使用


SharedPreferences 是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且 SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。

要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android中主要提供了三种方法用于得到 SharedPreferences 对象。

  1. Context 类中的 getSharedPreferences()方法
    此方法接收两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data//shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE 和 MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个
    SharedPreferences文件进行读写。MODE_MULTI_PROCESS 则一般是用于会有多个进程中对同一个 SharedPreferences 文件进行读写的情况。类似地,MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE 这两种模式已在 Android 4.2 版本中被废弃。

  2. Activity 类中的 getPreferences()方法
    这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。

  3. PreferenceManager 类中的 getDefaultSharedPreferences()方法这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。得到了 SharedPreferences 对象之后,就可以开始向 SharedPreferences 文件中存储数据了,主要可以分为三步实现。

  4. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象。

  5. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用
    putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。

  6. 调用 commit()方法将添加的数据提交,从而完成数据存储操作

存数据:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText= (EditText) findViewById(R.id.et_edit);
        button= (Button) findViewById(R.id.btn1 );
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mystring =editText.getText().toString();//这行不能放在oncreate方法中,因为在活动刚启动
                //的时候执行onCreate方法的时候edittext内容是空的,获取的也将是空值
                SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit();//1
                editor.putString("myinfo",mystring);//2
                editor.commit();//3
                Intent intent=new Intent(MainActivity.this,SecondAty.class);
                startActivity(intent);
            }
        });
    }

在另一个活动中取数据:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.readdata);
        textView= (TextView) findViewById(R.id.tv_text);
        button= (Button) findViewById(R.id.btn_read);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences preferences=getSharedPreferences("data",MODE_PRIVATE);
                String myinfo=preferences.getString("myinfo","empty");
                Toast.makeText(SecondAty.this,myinfo,Toast.LENGTH_SHORT).show();
                textView.setText(myinfo);
            }
        });
    }

shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide