为什么不在另一个Activity中检索SharedPreference值?

时间:2014-02-22 08:28:01

标签: android android-activity fragment sharedpreferences

我已将Shared Preference中的值存储在名为CommunityFragment的片段中。现在,我想将其检索到名为 Add_Task 的另一个Activity中的String变量中。

问题在于,当我尝试从Shared Preference检索该值时,我将其视为空。

任何人都可以建议我代码有什么问题。我在下面发布我的代码。

CommunityFragment.java

public class CommunityFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    final View rootView = inflater.inflate(R.layout.fragment_community, container, false);
{
final SharedPreferences pref11=getActivity().getPreferences(0);
SharedPreferences.Editor edts=pref11.edit();
edts.putString("mynumber",t4);
edts.commit();
}
});

return rootView;
}

Add_Task.java

public class Add_task extends Activity{
 protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_task);
    SharedPreferences pref = getPreferences(MODE_PRIVATE);
     String id = pref.getString("mynumber", "empty");
    Toast.makeText(this,""+id,Toast.LENGTH_LONG).show();
}
}

4 个答案:

答案 0 :(得分:1)

发生这种情况是因为您使用的是您的活动专用的偏好设置,使用全局设置为您的应用偏好设置:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

或使用此方法:

activity.getSharedPreferences("myprefs", MODE_PRIVATE);

并在第二个活动中使用相同的名称获取首选项:“myprefs”

答案 1 :(得分:1)

使用此

 final SharedPreferences pref11 = getActivity().getSharedPreferences("MyValue", 0);

而不是

 final SharedPreferences pref11=getActivity().getPreferences(0);

并检索与

相同的内容
 final SharedPreferences pref11 = getActivity().getSharedPreferences("MyValue", 0);

而不是

 SharedPreferences pref = getPreferences(MODE_PRIVATE);

在Add_Task活动中。

答案 2 :(得分:1)

试试这个:

SharedPreferences pref11= PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor edts = pref11.edit();
edts.putString("mynumber",t4);
edts.commit();

在Add_Task.java中:

SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getContext());
String id = pref.getString("mynumber", "empty");

答案 3 :(得分:0)

CommunityFragment.java

      final SharedPreferences pref11 = getActivity().getSharedPreferences("Value", 0);
      SharedPreferences.Editor editor = pref11.edit();  
      editor.putString("mynumber",t4);  
      editor.commit();  

Add_Task.java

    final SharedPreferences pref11 = getSharedPreferences("Value", 0);
    String Name1 = values.getString("mynumber", null);