【发布时间】:2016-09-24 18:17:04
【问题描述】:
我的片段中有两个选项卡的 tablayout。问题是当我运行这个片段时,它一开始并没有显示我的第一个片段。但是当我选择第二个选项卡并返回第一个选项卡时它工作正常吗? 我该如何解决这个问题?
我已经看到了这个:Android TabLayout select first Tab on Startup,但它根本没有帮助。
public class FriendsFragment2 extends Fragment {
TabLayout tabs_fragment;
FriendshipFragment fragment1;
RequestFrienshipFragment fragment2;
public FriendsFragment2() {
// Required empty public constructor
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container
, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_friends2, container, false);
tabs_fragment = (TabLayout) rootView.findViewById(R.id.tabs_fragment);
setupTabLayout();
EventTab();
tabs_fragment.getTabAt(0).select();
return rootView;
}
private void setupTabLayout() {
fragment1 = new FriendshipFragment();
fragment2 = new RequestFrienshipFragment();
tabs_fragment.addTab(tabs_fragment.newTab().setText("two"));
tabs_fragment.addTab(tabs_fragment.newTab().setText("one"));
}
private void EventTab() {
tabs_fragment.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
setCurrenttabFragment(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setCurrenttabFragment(int tabPosition) {
switch (tabPosition) {
case 0:
replaceFragment(fragment1);
break;
case 1:
replaceFragment(fragment2);
break;
}
}
private void replaceFragment(Fragment fragment) {
FragmentManager fm = getChildFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frame_container_friends_fragment, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
}
【问题讨论】:
-
我不知道你为什么要让你的生活变得复杂。您可以简单地使用带有标签的 viewpager。它有一个简单的库,可以为你处理一切。
-
我无法使用 ViewPager,因为每次刷卡时它都不会刷新
-
在这种情况下,我建议您完成片段生命周期。如果你想刷新你的片段,你应该重写 onResume 方法。并且在您的情况下还有很多片段实例会像地狱一样减慢您的应用程序。
标签: android select android-tablayout