我在我的应用上实现了一个夜间模式视图,它只使用加载HTML内容的webview来使用Fragments和ViewPager。现在点击按钮我通过Javascript触发了夜间模式,并将配置存储在我的共享首选项中作为新设置。夜间模式应该在viewPager中的所有片段页面上实现,但这并不适用于缓存页面,因为它仍然使用旧配置,除非它们在滚动时被销毁。
我想知道是否还有我可以在viewPager上重新加载那些缓存页面的webView内容,以便所有内容都使用相同的格式。我尝试了notifyDataSetChanged,但这并没有像我预期的那样工作,我想这不是正确的方法,因为我可能会失去我现在的位置。
有没有办法做到这一点?
答案 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的片段实例。