Android表格布局选择
我的片段中有两个选项卡,问题是当我运行这个片段时,它并没有首先显示我的第一个片段。但当我选择第二个选项卡并返回到第一个选项卡时,它工作正常吗? 我怎样才能解决这个问题 我看到了这一点:但这一点都没有帮助Android表格布局选择,android,select,android-tablayout,Android,Select,Android Tablayout,我的片段中有两个选项卡,问题是当我运行这个片段时,它并没有首先显示我的第一个片段。但当我选择第二个选项卡并返回到第一个选项卡时,它工作正常吗? 我怎样才能解决这个问题 我看到了这一点:但这一点都没有帮助 public class FriendsFragment2 extends Fragment { TabLayout tabs_fragment; FriendshipFragment fragment1; RequestFrienshipFragment fragment2; publi
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,而不必使用陈旧的代码。但如果你想以你已知的方式解决问题
onCreateView()中执行与ui无关的任务
tabs_fragment.getTabAt(0).select()代码>带有
tabs_fragment.post(new Runnable() {
@Override
public void run() {
tabs_fragment.getTabAt(0).select();
}
});
您所面临的问题是因为您的选项卡\u片段
尚未准备就绪,您正在对其执行操作。但通过执行上述步骤,可以确保在对选项卡执行任何操作时,选项卡已准备就绪
编辑:在添加选项卡时将其标记为selectewd。
然后
您查看的链接有一个延迟处理程序。即使在延迟之后,您的视图也可能没有准备好。因此,正确的方法是将runnable应用于视图本身。这将确保仅在视图就绪时调用runnable
我不知道你为什么要把你的生活复杂化。您可以简单地使用带有选项卡的viewpager。它有一个简单的库,可以为您保存所有信息。我不能使用ViewPager,因为它不会每次在您打开此案例时都刷新。我建议您经历片段生命周期。如果要刷新片段,应该重写onResume方法。还有很多碎片的实例,比如你的例子,会让你的应用程序慢得要命。我不知道为什么,但这并不能解决我的问题。谢谢你抽出时间,我仍然建议你使用带标签的viewpager。并遵循适当的片段生命周期进行刷新。我也尝试过,我确实使用了onResume并调用了我的getData()方法。每次刷卡时它都会刷新,但它不会从服务器获取数据。是的,你能不能也更新getData代码,我觉得这更重要请再次查看答案,我更新了一点。现在可能会有帮助
tabs_fragment.post(new Runnable() {
@Override
public void run() {
tabs_fragment.getTabAt(0).select();
}
});
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"), true);
}