Hassaan Rabbani
Hassaan Rabbani

Reputation: 2465

Issue with fragments android

I am using android fragments and view pager widgets. I want to add generically more fragments to a defined layout.

The issue is

when i try to enter a fragment through code, i always got an error.

below is my code

public class Video extends FragmentActivity {
    MyPageAdapter pageAdapter;
    ViewPager pager;
    LinearLayout Video_content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);

        Video_content = (LinearLayout)findViewById(R.id.Content);
        FragmentTransaction t = getFragmentManager().beginTransaction();
        //Add first fragment
        MyFragment myFragment1 = new MyFragment();

I got Error on this line

t.add(Video_content.getId(), myFragment1, "myFirstFragment");

/*Video_fragment myFragment2 = new Video_fragment();
            t.add(Video_content.getId(), myFragment2, "mySecondFragment");*/
            t.commit();

            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            int screenWidth = metrics.widthPixels; 

            Button button1=(Button)findViewById(R.id.Tvshows);
            Button button2=(Button)findViewById(R.id.movies);
            Button button3=(Button)findViewById(R.id.music);

             List<Fragment> fragments = getFragments();

                pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);

                pager = (ViewPager)findViewById(R.id.viewpager);
                pager.setAdapter(pageAdapter);
                pager.setCurrentItem(0);
                button1.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        pager.setCurrentItem(0);
                    }
                });
                button2.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        pager.setCurrentItem(1);
                    }
                });
                button3.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        pager.setCurrentItem(2);
                    }
                    });



        }



         private List<Fragment> getFragments(){
                List<Fragment> fList = new ArrayList<Fragment>();

                fList.add(MyFragment.newInstance("Tv Shows"));
                fList.add(MyFragment.newInstance("Movies"));
                fList.add(MyFragment.newInstance("Music Videos"));

                return fList;
            }

            private class MyPageAdapter extends FragmentPagerAdapter {
                private List<Fragment> fragments;

                public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
                    super(fm);
                    this.fragments = fragments;
                }
                @Override
                public Fragment getItem(int position) {
                    return this.fragments.get(position);

                }

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

The Error says: Change type of MyFragment1 to Fragment

I have imported following imports

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

Here is the code of MyFragment class:

import android.support.v4.app.Fragment;

public class MyFragment extends Fragment{
    public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";


    View v;
    Handler updateHandler;
    public static final MyFragment newInstance(String message)
    {
        MyFragment f = new MyFragment();
        Bundle bdl = new Bundle(1);
        bdl.putString(EXTRA_MESSAGE, message);
        f.setArguments(bdl);
        return f;

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        String message = getArguments().getString(EXTRA_MESSAGE);
        v = inflater.inflate(R.layout.video_fragment, container, false);
        TextView messageTextView = (TextView)v.findViewById(R.id.textView);
        messageTextView.setText(message);

        if(message.equals("Tv Shows"))
        {

        }
        if(message.equals("Movies"))
        {
        }
        if(message.equals("Music Videos"))
        {

        }

        return v;
    }

My Question is:

How can i add generic layouts through fragment and use view pager simultaneously?

Upvotes: 2

Views: 92

Answers (2)

2Dee
2Dee

Reputation: 8621

Are you sure you are using the correct FragmentTransaction and FragmentManager classes ?

I believe this

getFragmentManager().beginTransaction();

should be replaced by this

getSupportFragmentManager().beginTransaction();

Upvotes: 1

vipul mittal
vipul mittal

Reputation: 17401

change:

getFragmentManager()

to

getSupportFragmentManager()

When you are initializing t do use supportFragmentManager

FragmentTransaction t = getSupportFragmentManager().beginTransaction();

Upvotes: 1

Related Questions