2017-10-12 63 views
1

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

note:我不想在每个片段中加载按钮来加载数据。

发件人:

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

UPDATE 我提出在原岗位犯错时,发送方应该是:

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

因为关键的东西。

还有一个问题,片段im发送数据是最后一页(第5页),当我发送数据时,它旁边的页面(第4页)不会更新,直到我滑动到第3页并返回为从SharedPreferences这是在发件人使用了获取数据它

+0

相反上下文语境= getActivity(),您可以使用片段的getContext的()对? – Anonymous

+0

@匿名让我试试1秒 – amirsoltani

+0

@匿名是的,你可以 – amirsoltani

回答

1

使用本

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

,而不是这个

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

为感谢你指出来,还是一个问题,旁边的“发件人”页面的页面重新加载犯规 – amirsoltani

+0

@amirsoltani你能解释更多 –

+0

是我使用viewpager所以片段从IM发送的数据是最后一页(第5页)当我发送数据时,发送数据的页面(页面4)旁边的页面不会更新,直到我滑动到页面3并返回到它 – amirsoltani

2

使用相同的密钥。变化:

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

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

哦,是啊对不起,这是一个错误,谢谢你指出来,还是一个问题,旁边的“发件人”页面的页面重新加载犯规对不起 – amirsoltani