相关疑难解决方法(0)

替换ViewPager中的Fragment

我正在尝试使用Fragment ViewPager使用FragmentPagerAdapter.我想要实现的是将位于第一页上的片段替换为另一片段ViewPager.

寻呼机由两页组成.第一个是FirstPagerFragment,第二个是SecondPagerFragment.单击第一页的按钮.我想FirstPagerFragment用NextFragment 替换它.

我的代码如下.

public class FragmentPagerActivity extends FragmentActivity {

    static final int NUM_ITEMS = 2;

    MyAdapter mAdapter;
    ViewPager mPager;

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

        mAdapter = new MyAdapter(getSupportFragmentManager());

        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

    }


    /**
     * Pager Adapter
     */
    public static class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public Fragment getItem(int …
Run Code Online (Sandbox Code Playgroud)

android view pager android-fragments android-viewpager

259
推荐指数
8
解决办法
18万
查看次数

当布局不为空时,得到"java.lang.IllegalStateException:片段已处于活动状态"

我有3个片段的活动和寻呼机.我使用标签进行切换.当我点击某个按钮时,我想用新的替换fragment0.仅当fragment0具有空布局时才有效.如果我在fragment0的布局中设置一些内容(必须有listview)抛出异常:

java.lang.IllegalStateException: Fragment already active
    at android.support.v4.app.Fragment.setInitialSavedState(Fragment.java:503)
    at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:110)
    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
Run Code Online (Sandbox Code Playgroud)

我使用以下布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:id="@+id/all_exp_frag"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">

<ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/all_expenses"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动:

public class Activity extends FragmentActivity {

    private List<Fragment> fragments;
    private MyPagerAdapter pagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        fragments = asList(new Fragment0(), new Fragment1(), new Fragment2());
        // initialize pager, etc.
        pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), pager);
    }

    // handle add new fragment button
    @Override
    public boolean onOptionsItemSelected(MenuItem item) { 
        pagerAdapter.replaceCurrentFragment(new Fragment3());
    }

    public class …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

5
推荐指数
1
解决办法
1万
查看次数