Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在选项卡片段中设置ViewPager_Java_Android_Android Fragments_Android Viewpager_Android Tabs - Fatal编程技术网

Java 在选项卡片段中设置ViewPager

Java 在选项卡片段中设置ViewPager,java,android,android-fragments,android-viewpager,android-tabs,Java,Android,Android Fragments,Android Viewpager,Android Tabs,在android操作栏选项卡中设置ViewPager时遇到问题。 我对开发应用程序还不熟悉,并尝试通过反复尝试让所有东西都能正常工作,但这一点相当困难 我想要的 两个actionbar选项卡,每个选项卡包含一个带有一些片段的ViewPager 到目前为止我做了什么 主要活动: public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedIns

在android操作栏选项卡中设置ViewPager时遇到问题。 我对开发应用程序还不熟悉,并尝试通过反复尝试让所有东西都能正常工作,但这一点相当困难

我想要的
两个actionbar选项卡,每个选项卡包含一个带有一些片段的ViewPager

到目前为止我做了什么
主要活动:

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // load ActionBar
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setCustomView(R.layout.actionbar_view);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setDisplayShowHomeEnabled(true);

        tabA = actionBar.newTab().setText("Tab A");
        tabB = actionBar.newTab().setText("Tab B");
        Fragment fragmentA = new FragmentA();
        Fragment fragmentB = new FragmentB();
        tabA.setTabListener(new MyTabListener(fragmentA));
        tabB.setTabListener(new MyTabListener(fragmentB));
        actionBar.addTab(tabA);
        actionBar.addTab(tabB);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    class MyTabListener implements ActionBar.TabListener {
        public Fragment frag;

        public MyTabListener(Fragment frag) {
            this.frag = frag;
        }

        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // on tab reselected
        }

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            // need to create own FragmentTransaction cause ActionBar doesn'T support 'android.support.v4'
            android.support.v4.app.FragmentTransaction fft = mActivity.getSupportFragmentManager().beginTransaction();
            fft.replace(R.id.main_fragment_container, frag);
            fft.commit();
        }

        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            // need to create own FragmentTransaction cause ActionBar doesn'T support 'android.support.v4'
            android.support.v4.app.FragmentTransaction fft = mActivity.getSupportFragmentManager().beginTransaction();
            fft.remove(frag);
            fft.commit();
        }
    }

}
碎片a.class

public class FragmentA extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        return inflater.inflate(R.layout.layout_A, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        ViewPager mViewPager = (ViewPager) view.findViewById(R.id.tabA_pager);
        mViewPager.setAdapter(new MyPagerAdapter(getChildFragmentManager()));
    }
}
MyPagerAdapter.class

public class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment f = new Fragment();
        switch (position) {
        case 0:
            f = LayoutOne.newInstance(null);
            break;
        case 1:
            f = LayoutTwo.newInstance(null);
            break;
        case 2:
            f = LayoutThree.newInstance(null);
            break;
        }
        return f;
    }

    @Override
    public int getCount() {
        return 3;
    }
}
LayoutOne.class

public class LayoutOne extends Fragment {

    public static Fragment newInstance(Context context) {
        LayoutOne f = new LayoutOne();
        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        TextView root = (TextView) inflater.inflate(R.layout.layout_one, null);
        return root;
    }
}


有什么问题
应用程序启动时没有问题,但是标签A的片段加载似乎有点混乱,因为测试文本没有显示出来。 当我切换到选项卡B,然后再返回选项卡A时,我得到FC,并说: java.lang.IllegalStateException:活动已被销毁 ... 在FragmentA.onViewCreated 所以我猜ViewPager适配器有问题

我做了一些搜索,但找不到包含此显式布局的工作版本。 有人在6个月前发布了一条消息,但没有解决方案

我的设置有什么问题