当活动开始时,它会加载NavigationDrawer
,里面有3个部分。 1st有一个可正常工作的RecyclerView。第二个有PagerSlidingTabStrip
有问题。 3rd有一些代码可以改变PreferenceManager并且运行良好。
现在问题是getItem()
的{{1}}方法只被调用一次,即。这是我第一次单击CustomPagerAdapter
中的用户部分,但在我尝试再次打开后导航时NavigationDrawer
未被调用,因此getItem()
内没有任何内容初始化。
然后我要重新打开该应用,ViewPager
将会工作一次。
请指导我。可能是什么问题?
更新
我做了一些测试,发现PagerSlidingTabStrip
的{{1}}仅在我第一次启动第2节时被调用一次,然后当我再次尝试启动它时,它没有被调用。为什么这样?
NavigationDrawer部分:
getItem()
第二部分 - UserFragment:
FragmentPagerAdapter
FragmentPagerAdapter - CustomAdapter:
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getFragmentManager();
switch(position) {
case 0: //Events
fragmentManager.beginTransaction().replace(R.id.container,
EventsRecyclerViewFragment.newInstance(position + 1))
.addToBackStack(null).commit();
break;
case 1: //User
fragmentManager.beginTransaction().replace(R.id.container,
UserFragment.newInstance(position + 1))
.addToBackStack(null).commit();
break;
case 2: //Logout
prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(prefs.getBoolean(KEY_LOGIN, false)) {
prefs.edit().remove(KEY_LOGIN).apply();
prefs.edit().remove(KEY_USERNAME).apply();
prefs.edit().remove(KEY_PASSWORD).apply();
Intent intent = getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(intent);
Customs.mToast(getBaseContext(), "Logged-out");
}
break;
}
}
NavigationDrawer:
第一次从NavigaiontDrawer打开用户:
第二次从NavigaiontDrawer打开用户:
答案 0 :(得分:0)
好的,问题解决了。我刚刚从FragmentPagerAdapter
更改为FragmentStatePagerAdapter
。
FragmentPagerAdapter
的问题在于它只创建Fragments
一次,并在下次恢复它时。这应该工作得很好但是我再次NavigationDrawer
Pager
以上{{1}}层,所以当我从NavigationDrawer更改了部分时,一些东西搞砸了,FragmentPagerAdapter也没有抓取碎片也没有创造新的。