在ViewPager中更改片段时出现问题

时间:2016-12-15 06:27:18

标签: android android-fragments

我正在尝试在ViewPager中单击按钮时更改/滑动片段。我的代码在一个项目中工作,但不是当前的。

加载片段的xml活动:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_swipe"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="firebasetest.imranrana.android.firebasetest.SwipeActivity"
    tools:showIn="@layout/activity_swipe"
    android:orientation="vertical"
    >

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewPagerId"
        >
    </android.support.v4.view.ViewPager>

</LinearLayout>

活性:

public class  SwipeActivity extends AppCompatActivity{

    ViewPager viewPager;
    Toolbar toolbar;
    TabLayout tabLayout;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_swipe);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        getSupportActionBar().hide();
        viewPager=(ViewPager)findViewById(R.id.viewPagerId);
        setupViewPager(viewPager);

//        tabLayout=(TabLayout)findViewById(R.id.tabLayoutId);
//        tabLayout.setupWithViewPager(viewPager);

    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFragment(new WebViewFragment()/*, "Main"*/);
        adapter.addFragment(new MenuFragment()/*, "TWO"*/);

        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentStatePagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
//        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment/*, String title*/) {
            mFragmentList.add(fragment);
//            mFragmentTitleList.add(title);
        }

        /*@Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }*/
    }
}

viewpager的片段包含更改按钮:

public class    MenuFragment extends Fragment {

    Button funPageButton;
    Button profilePageButton;
    Fragment fragment;
    FragmentTransaction fragmentTransaction;



    public MenuFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view=inflater.inflate(R.layout.fragment_menu, container, false);

        funPageButton=(Button)view.findViewById(R.id.funPageButtonId);
        profilePageButton=(Button)view.findViewById(R.id.profileButtonId);


        funPageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast.makeText(getActivity(),"test",Toast.LENGTH_LONG).show();
                fragment=new TestFragment();
                fragmentTransaction=getActivity().getSupportFragmentManager().beginTransaction(); ;
                fragmentTransaction.replace(R.id.content_swipe,fragment).commit();


            }
        });

        profilePageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast.makeText(getActivity(),"test 1",Toast.LENGTH_LONG).show();

                fragment=new TestFragment1();
                fragmentTransaction=getFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.content_swipe,fragment).commit();


            }
        });



        return view;
    }

}

我做错了什么?

0 个答案:

没有答案