3 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個贊
尋呼機(jī)的行為里面片段作為可見即使沒有當(dāng)前用戶可見,受影響的片段有所不同基于尋呼機(jī)offscreenPageLimit所以嘗試刷新片段內(nèi)setUserVisibleHint或onResume使用尋呼機(jī)時,沒有任何效果。
但是這是沒有問題,因?yàn)樗穷A(yù)期的行為,尋呼機(jī)的目的是為了讓頁面間切換的用戶,你在瀏覽器中切換標(biāo)簽..如果你還是堅(jiān)持刷新頁面,你可以做到這一點(diǎn)的尋呼機(jī)里面addOnPageChangeListener是這樣的:
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Fragment fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + position);
if(fragment != null && fragment instanceof RefreshableFragment)
((RefreshableFragment) fragment).refresh();
}
});

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個贊
根本原因:這是 Android 的一項(xiàng)功能,稱為offscreen page limit,它將保留當(dāng)前片段兩側(cè)的片段數(shù),默認(rèn)值為 1。在您的情況下,使用setUserVisibleHint不足以刷新數(shù)據(jù)。
解決方案:
public class YourFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,Bundle savedInstanceState) {
if (getUserVisibleHint()) { // fragment is visible to users.
refresh();
}
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed()) { // fragment is visible to users
refresh();
}
}
public void refresh(){
}
}

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個贊
在片段下,您應(yīng)該在片段的onResume()回調(diào)下調(diào)用您的方法。
public void onResume(){
super.onResume();
.....
}
添加回答
舉報(bào)