I have an activity that has a navigation drawer and a Fragment state adapter. When ever I click something in the navigation drawer I am passing that info to the mainactivity via a interface.And then I am passing that data to the main fragment which is in Fragmentstateadapter. The problem is when ever the screen rotates I get a null pointer exception for the main fragment.`
public class MainActivity extends ActionBarActivity implements RightDrawerRecyclerAdapter.Filters,
LeftDrawerFragment.MenuSection,CommonAsyncTask.ServerData {
private static final String TAG = MainActivity.class.getSimpleName();
public MainFragment mMainFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
ScreenSlidePagerAdapter pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
}
@Override
public void getMenuSelection(int selection) {
Log.d(TAG,"getMenuSelection->"+selection);
mMainFragment.getMenuSelection(selection);
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
Log.d(TAG, "in screenslide");
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
Log.d(TAG, "in returning MainFragment");
mMainFragment=new MainFragment();
return mMainFragment;
} else {
return new MapViewFragment();
}
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0) {
return "List";
} else {
return "Map";
}
}
}}
So getMenuSelection is the method from the interface in navigation drawer. Then I have a method with the same name in my main fragment in MainFragment.So when ever I select something in the navigation drawer I can change contents in the main fragment but when ever I turn my screen a new instance of MainFragment is getting created and getItem(int position) is not getting trigged so my MainFragment object is null and now I cant pass data from my navigation drawer to main fragment.I tried making MainFragment object as static and that created problems in my MainFragment class.
So how can I get back the same MainFragment object even when the screen is turned. Or is there any better way to pass data between navigation drawer fragment and a fragment in FragmentState adapter
Aucun commentaire:
Enregistrer un commentaire