当我使用getChildFragmentManager()
时,我的应用程序运行正常但不幸的是,它只适用于API 17及更高版本。现在,当我将其切换到getFragmentManager()
时,一切正常,除了一件事。每当我在水平视图中加载我的tablayout时,两个页面都是空的,并且滑动是缓慢的。垂直方向很好,如果我先垂直加载它们然后切换到水平方向,它们就不会是空的,因为我使用的是保存的实例。我不知道造成这种情况的原因。我所知道的是,只要我将代码切换到上面,就会发生这种情况。让我知道找到问题需要什么,我很乐意发布。我正在使用support-v13库的FragmentPagerAdapter。我这样做是因为我不必使用support-v4创建片段的方式。我在tablayout片段中从v4导入ViewPager。
编辑:
好的,第一次创建tablayout时,它工作正常。当再次调用时,它将是空白且缓慢的。它与方向无关。
编辑:
Tablayout代码请记住此代码功能正常。但是当我将getChildFragmentManager()更改为getFragmentManager()时,它变得缓慢并且只能在第一个oncreate上工作:
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class TabFragment extends Fragment {
public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 2;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View x = inflater.inflate(R.layout.tab_layout, null);
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewPager = (ViewPager) x.findViewById(R.id.viewpager);
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return x;
}
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FragmentOne();
case 1:
return new FragmentTwo();
}
return null;
}
@Override
public int getCount() {
return int_items;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "TAB1";
case 1:
return "TAB2";
}
return null;
}
}
}