首先,你应该使用SharedPreferences检查用户登录或没有。
此外,您可以在您的片段中使用此代码来检查此片段是否可见。如果可见,你可以做你需要的任务从共享首选项获取布尔登录信息。
private static boolean m_iAmVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
m_iAmVisible = isVisibleToUser;
if (m_iAmVisible) {
Log.d(localTAG, "this fragment is now visible");
} else {
Log.d(localTAG, "this fragment is now invisible");
}
}
这里看,我在我使用viewPager一个片段,在onCreateView方法
final View x = inflater.inflate(R.layout.consumer_tab_layout, null);
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewpager_for_tabs = (ViewPager) x.findViewById(R.id.viewpager_for_tabs);
bottom_tv1 = (TextView) x.findViewById(R.id.bottom_tv1);
bottom_tv2 = (TextView) x.findViewById(R.id.bottom_tv2);
bottom_tv3 = (TextView) x.findViewById(R.id.bottom_tv3);
bottom_tv4 = (TextView) x.findViewById(R.id.bottom_tv4);
bottom_tv5 = (TextView) x.findViewById(R.id.bottom_tv5);
/**
*Set an Apater for the View Pager
*/
viewpager_for_tabs.setAdapter(new MyAdapter(getChildFragmentManager()));
viewpager_for_tabs.setOffscreenPageLimit(5);
/**
* Now , this is a workaround ,
* The setupWithViewPager dose't works without the runnable .
* Maybe a Support Library Bug .
*/
viewpager_for_tabs.setOnPageChangeListener(myOnPageChangeListener);
bottom_tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateBottomTabTextViews(bottom_tv1, R.drawable.d1);
viewpager_for_tabs.setCurrentItem(0, false);
}
});
bottom_tv2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateBottomTabTextViews(bottom_tv2, R.drawable.d2);
viewpager_for_tabs.setCurrentItem(1, false);
}
});
bottom_tv3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateBottomTabTextViews(bottom_tv3, R.drawable.d3);
viewpager_for_tabs.setCurrentItem(2, false);
}
});
bottom_tv4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateBottomTabTextViews(bottom_tv4, R.drawable.d4);
viewpager_for_tabs.setCurrentItem(3, false);
}
});
bottom_tv5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateBottomTabTextViews(bottom_tv5, R.drawable.d5);
viewpager_for_tabs.setCurrentItem(4, false);
}
});
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewpager_for_tabs);
}
});
return x;
而且在适配器的GetItem方法
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new fragment();
case 1:
return frag2.getInstance();
case 2:
return frag3.getInstance();
case 3:
return frag4.getInstance();
case 4:
return frag5.getInstance();
}
return null;
}
在这我只是要务实使用performClick()方法调用Button onClick,它会自动替换我的片段。
更好的解决办法是改变viewPager的当前项目看一看这个解决方案pager.setCurrentItem(num)
如果你想viewPager单个标签上显示不同的片段,然后应用在getItems布尔条件()的片段的方法适配器。然后调用viewPager.setCurrentItem(int)
函数。
确保您的片段适配器扩展FragmentStatePagerAdapter
类
请提供更多的细节,你的问题是不完整的 –
添加更多的代码,你在哪里使用'FragmentManager'的部分'添加/ replace'当前'Fragment'。还要在初始化“NewsFragment”和“NewsAllFragment”的地方添加断点,以检查它是否实际被调用。 – Abbas
您应该在您的首选项中存储loggedIn布尔值或某个键,以检查您是否想知道用户是否已登录 – Eenvincible