【问题标题】:Force sending data using SharedPreferences( fragment to fragment in PagerAdapter)使用 SharedPreferences 强制发送数据(PagerAdapter 中的片段到片段)
【发布时间】:2018-03-23 23:20:24
【问题描述】:

我正在使用SharedPreferences 来存储片段中的数据并将其发送到其他 4 个片段,但我的问题是当应用程序正在运行并且我在单击按钮上发送数据时,其他片段需要一段时间才能实际接收到数据(或者当他们更新 3 或 4 次滑动后滑动页面时)我在每个片段中尝试了 setUserVisibleHint,在活动中尝试了 onpagechangelistener,但没有任何变化。如何让其他片段在我滑动到页面或按下按钮时接收数据?

注意:我不想在每个片段中放置按钮来加载数据。

发件人:

   int riddle;
   Context context = getActivity();
   SharedPreferences SU = context.getSharedPreferences(
                        "Riddle", Context.MODE_PRIVATE);
   SharedPreferences.Editor editor= SU.edit();
   editor.putString("Riddle",""+riddle);
   editor.commit();

其他片段:

      int Riddle;
      Context context = getActivity();
      SharedPreferences SU = context.getSharedPreferences(
                "Riddle", Context.MODE_PRIVATE);
      Riddle=  Integer.parseInt(SU.getString("riddle",""));

更新 原帖发错了,发件人应该是:

    int riddle;
   Context context = getActivity();
   SharedPreferences SU = context.getSharedPreferences(
                        "Riddle", Context.MODE_PRIVATE);
   SharedPreferences.Editor editor= SU.edit();
   editor.putString("riddle",""+riddle);
   editor.commit();

因为关键的事情。

还有一个问题,我发送数据的片段是最后一页(第 5 页),当我发送数据时,它旁边的页面(第 4 页)不会更新,直到我滑动到第 3 页并返回它

【问题讨论】:

  • 你可以使用片段 getContext() 代替 Context context = getActivity() 对吗?
  • @Anonymous 让我试试 1 秒
  • @Anonymous 是的,你可以
  • 还将 editor.commit() 更改为 editor.apply() 并检查问题是否解决。
  • 不,但谢谢

标签: android android-fragments sharedpreferences


【解决方案1】:

使用相同的密钥从发送方使用的SharedPreferences 获取数据。改变:

Riddle=  Integer.parseInt(SU.getString("riddle",""));
                                        ^^^^^

Riddle=  Integer.parseInt(SU.getString("Riddle",""));

【讨论】:

  • 哦,是的,对不起,这是一个错误,谢谢您指出,“发件人”页面旁边的页面仍然有一个问题没有重新加载
【解决方案2】:

使用这个

Riddle=  Integer.parseInt(SU.getString("Riddle",""));

而不是这个

Riddle=  Integer.parseInt(SU.getString("riddle",""));

【讨论】:

  • 很抱歉,感谢您指出这一点,“发件人”页面旁边的页面仍然有一个问题没有重新加载
  • @amirsoltani 你能解释一下吗
  • 是的,我正在使用 viewpager,所以我发送数据的片段是最后一页(第 5 页),当我发送数据时,我发送数据的页面旁边的页面(页4) 在我滑动到第 3 页并返回之前不会更新
  • @amirsoltani 试试这个viewPager.getAdapter().notifyDataSetChanged()
  • @amirsoltani 形成更多信息查看此stackoverflow.com/questions/18088076/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
相关资源
最近更新 更多