【问题标题】:Why doesn't the SharedPreference value get retrieved in another Activity?为什么不在另一个 Activity 中检索 SharedPreference 值?
【发布时间】:2014-02-22 08:28:01
【问题描述】:

我在名为CommunityFragment 的片段中存储了Shared Preference 中的值。现在,我想将它检索到另一个名为 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();
}
}

【问题讨论】:

    标签: android android-activity fragment sharedpreferences


    【解决方案1】:

    发生这种情况是因为您使用的是专用于您的活动的首选项,请对您的应用首选项使用全局:

    PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    

    或使用此方法:

    activity.getSharedPreferences("myprefs", MODE_PRIVATE);
    

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

    【讨论】:

      【解决方案2】:

      使用这个

       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 活动中。

      【讨论】:

        【解决方案3】:

        试试这个:

        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");
        

        【讨论】:

          【解决方案4】:

          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);  
          

          【讨论】:

          • 添加描述,解释你的问题是什么,不要只是发布你的代码。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-30
          • 2020-04-06
          • 1970-01-01
          • 1970-01-01
          • 2020-06-20
          • 1970-01-01
          相关资源
          最近更新 更多