【Android编程】SharedPreferences与Fragment

40 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情.

SharedPreferences

1.什么是SharedPreferences 存储?

SharedPreferences是Android平台上一个轻量级的存储类,用来存储少量数据时简单,便捷(保存记住密码状态,设置开关状态等)。 以key-value(键值对)形式存储数据,可以存储的数据类型为:String、float、int、long、boolean。 存储位置在/data/data/<包名>/shared_prefs目录下。 保存的数据以XML形式存储。

2.使用SharedPreferences写入数据步骤:

1.获得使用SharedPreferences对象; 2.获得Editor对象; 3.通过Editor对象的putXXX函数,设置写入数据; 4.通过Editor对象的commit提交写入;

btn_back.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        //1 创建 SharePreferences 对象
        String username = edit_name.getText().toString();
        String password = edit_password.getText().toString();
        SharedPreferences sharedPreferences = getSharedPreferences("test", MODE_PRIVATE);

        //2  创建Editor对象,3 写入值
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString("name", username);
        editor.putString("password",password);

        //4  提交
        editor.commit();
        Toast.makeText(MainActivity.this, "提交成功", Toast.LENGTH_SHORT).show();

        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
        intent.putExtra("username","用户名为"+username);
        startActivity(intent);
        finish();
    }
});

3.使用sharedPreferences.getString方法读取数据:

if (sharedPreferences != null) {
// 读取数据,用sharedPreferences.getString方法
    String name = sharedPreferences.getString("name", "");
    String password = sharedPreferences.getString("password", "");
    edit_name.setText(name);
}

4.将EditText框中写入的数据传送到其他页面:

MainActivity:
    String username = edit_name.getText().toString();
    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
    intent.putExtra("username","用户名为"+username);
    startActivity(intent);
    finish();
    
Main2Activity:
    textView.setText(intent.getStringExtra("username"));
    

Fragment

作业内容:

在这里插入图片描述

第一种想法(失败×):

在这里插入图片描述

第二种想法 (成功√):

在这里插入图片描述

相关方法: 1、fragment和activity中的控件相互调用 ①.在activity中获取fragment中的控件: v4包: getSupportFragmentManager().findFragmentById(R.id.xxfragment).getView().findViewById(R.id.xx); 非v4包: getFragmentManager().findFragmentById(R.id.xxxxfragment).getView().findViewById(R.id.xx); ②.fragment怎么用activity中的控件: //获取宿主Activity mActivity.findViewById(R.id.xx)

2、Android判断字符串是否为空 TextUtils.isEmpty(str) 可以判断字符串是否为null或者"",当是的时候为true,否的时候为false

第三种想法 (成功√):

在这里插入图片描述 相关方法: 1、单选框选中后的取值方法

  radioGroup = view.findViewById(R.id.radioGroup);
   for(int i = 0 ;i < radioGroup.getChildCount();i++) {
                    RadioButton rb = (RadioButton) radioGroup.getChildAt(i);
                    if (rb.isChecked()) {
                        String str_sex = rb.getText().toString();
                        secondFragment.setSex(str_sex);
                        break;
                    }
                }

2、Fragment之间的传值函数(如下图)

在这里插入图片描述