重新加载ViewPager的偏移缓存页面以补充内容

时间:2015-09-29 06:52:10

标签: android caching android-fragments android-viewpager

我在我的应用上实现了一个夜间模式视图,它只使用加载HTML内容的webview来使用Fragments和ViewPager。现在点击按钮我通过Javascript触发了夜间模式,并将配置存储在我的共享首选项中作为新设置。夜间模式应该在viewPager中的所有片段页面上实现,但这并不适用于缓存页面,因为它仍然使用旧配置,除非它们在滚动时被销毁。

我想知道是否还有我可以在viewPager上重新加载那些缓存页面的webView内容,以便所有内容都使用相同的格式。我尝试了notifyDataSetChanged,但这并没有像我预期的那样工作,我想这不是正确的方法,因为我可能会失去我现在的位置。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

为每个片段使用BroadcastReceiver接收器。

修改

在viewpager的每个片段中:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter("eventName"));
}

@Override
public void onDetach() {
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
    super.onDetach();
}

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Refresh fragment here as you want
    }
};

然后点击按钮点击通话:

Intent intent = new Intent("eventName");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

其他方法是保存viewpager的片段实例。