Skip to content

Instantly share code, notes, and snippets.

@jackyzonewen
Forked from alexfu/FragmentObserver.java
Created October 25, 2013 23:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jackyzonewen/7163183 to your computer and use it in GitHub Desktop.
Save jackyzonewen/7163183 to your computer and use it in GitHub Desktop.
public class FragmentObserver extends Observable {
@Override
public void notifyObservers() {
setChanged(); // Set the changed flag to true, otherwise observers won't be notified.
super.notifyObservers();
}
}
public class MyActivity extends Activity {
private MyAdapter mPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.my_activity);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new MyAdapter();
pager.setAdapter(mPagerAdapter);
}
private void updateFragments() {
mPagerAdapter.updateFragments();
}
}
public class MyAdapter extends FragmentPagerAdapter {
private Observable mObservers = new FragmentObserver();
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
mObservers.deleteObservers(); // Clear existing observers.
Fragment fragment = new MyFragment();
if(fragment instanceof Observer)
mObservers.addObserver((Observer) fragment);
return fragment;
}
public void updateFragments() {
mObservers.notifyObservers();
}
}
public class MyFragment extends Fragment implements Observer {
/* Fragment related stuff... */
@Override
public void update(Observable observable, Object data) {
View root = getView();
// Update your views here.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment