How can I add a fragment to a ViewPager? addView crashes my app

前端 未结 1 1247
青春惊慌失措
青春惊慌失措 2020-12-11 02:11

I\'m using the default Swipe Tab Fragment code that Android starts with when you start a new Android application. I\'ve figured out how to modify my data and use the tabs, b

相关标签:
1条回答
  • 2020-12-11 02:30

    you can follow this approach:

    just Use fragments for each view in a pager.

    write the below code in onCreate() method of the FragmentActivity.

    List<Fragment> fragments = new Vector<Fragment>();
    
    //for each fragment you want to add to the pager
    Bundle page = new Bundle();
    page.putString("url", url);
    fragments.add(Fragment.instantiate(this,MyFragment.class.getName(),page));
    
    //after adding all the fragments write the below lines
    
    this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(), fragments);
    
    mPager.setAdapter(this.mPagerAdapter);
    

    A sample fragment definition:

    public class MyFragment extends Fragment {
    
    
    public static MyFragment newInstance(String imageUrl) {
    
    final MyFragment mf = new MyFragment ();
    
        final Bundle args = new Bundle();
        args.putString("somedata", "somedata");
        mf.setArguments(args);
    
        return mf;
    }
    
    public MyFragment() {}
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String data = getArguments().getString("somedata");
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate and locate the main ImageView
        final View v = inflater.inflate(R.layout.my_fragment_view, container, false);
        //... 
        return v;
    }
    

    FragmentPagerAdapter

    public class MyFragmentAdapter extends FragmentPagerAdapter {
    
    public static int pos = 0;
    
    private List<Fragment> myFragments;
    
    public MyFragmentAdapter(FragmentManager fm, List<Fragment> myFrags) {
        super(fm);
        myFragments = myFrags;
    }
    
    @Override
    public Fragment getItem(int position) {
    
        return myFragments.get(position);
    
    }
    
    @Override
    public int getCount() {
    
        return myFragments.size();
    }
    
    @Override
    public CharSequence getPageTitle(int position) {
    
        setPos(position);
    
        String PageTitle = "";
    
        switch(pos)
        {
            case 0:
                    PageTitle = "page 1";
                    break;
            case 1:
                    PageTitle = "page 2";
                    break;
            case 2:
                    PageTitle = "page 3";
                    break;
            case 3:
                    PageTitle = "page 4";
                    break;
            case 4:
                    PageTitle = "page 5";
                    break;
            case 5: 
                    PageTitle = "page 6";
                    break;
            case 6:
                    PageTitle = "page 7";
                    break;
        }
        return PageTitle;
    }
    
    public static int getPos() {
        return pos;
    }
    
     public static void setPos(int pos) {
        MyFragmentAdapter.pos = pos;
     }
    }
    
    0 讨论(0)
提交回复
热议问题