无法从intra fragment中的sharedPrference中检索数据?

时间:2016-04-14 13:29:28

标签: android android-fragments android-sharedpreferences

发送共享偏好的数据 这是沟通的接口

@Override
public void saveBMI(String d, String r, String f_r) {
    sharedPreferences=getSharedPreferences("userBMI",Context.MODE_PRIVATE);
    editor=sharedPreferences.edit();
    editor.putString("CheckDate",d);
    editor.putString("BmiResult",r);
    editor.putString("BmiWeight",f_r);
    editor.commit();
}

此方法用于将数据从共享首选项发送到另一个片段

@Override
public void showBMI() {
    if(sharedPreferences.contains("CheckDate"))
    {
        c_d=sharedPreferences.getString("CheckDate","");
    }
    if(sharedPreferences.contains("BmiResult"))
    {
        bmi_res=sharedPreferences.getString("BmiResult","");
    }
    if(sharedPreferences.contains("BmiWeight"))
    {
        bmi_w=sharedPreferences.getString("BmiWeight","");
    }

 //here i want to send the data to another fragment ...???



}

1 个答案:

答案 0 :(得分:0)

共享首选项的意思是你可以从任何地方访问它,所以在另一个片段中只需获取你想要的数据。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.getString("CheckDate","");

如果您的问题是关于如何将数据从片段发送到另一个片段,我建议在创建片段并在其中传递参数时使用newInstance方法。

public static GenericAreaFragment newInstance(String color, String title, String areaId, boolean isArea) {
    GenericAreaFragment frag = new GenericAreaFragment();
    Bundle args = new Bundle();
    args.putString(COLOR, color);
    args.putString(TITLE, title);
    args.putString(AREA_ID, areaId);
    args.putBoolean(ISAREA, isArea);
    frag.setArguments(args);
    return frag;
}

然后你可以用:

获得参数
getArguments().getBoolean(ISAREA); // or getString, etc

许多解释都在android文档中,以及如何通过活动和片段进行通信。

http://developer.android.com/intl/es/reference/android/app/Fragment.html