Wednesday, July 18, 2012

[android-developers] Re: Working with ViewPager and Fragments

On Jun 6, 11:42 pm, Nikhil Gupta <nikhil.gupta....@gmail.com> wrote:
> Replace your getItem() with something like this :
>
>   public Fragment getItem(int index) {
> switch(index){
> case 0: return new Frag1();
> case 1: return new Frag2();
> default : return null;}
>
>              }
>
> where Frag1, Frag2 are the various fragment classes for each layout.
>
> then in these fragment classes, inflate the respective layout, ex :
>
>  public View onCreateView(LayoutInflater inflater, ViewGroup container,
> Bundle savedInstanceState) {
>      View V= (View) inflater.inflate(R.layout.frag1, container, false);
>      return V;
>  }
>
> Hope it helps!
>
>
>
> On Tuesday, April 17, 2012 1:15:23 AM UTC+5:30, Kibria Ali wrote:
>
> > I am a beginner Android developer. I am trying to get my head around the
> > ViewPager. Before I was trying to work with this example:
>
> >http://mobile.tutsplus.com/tutorials/android/android-user-interface-d...
>
> > I had the views working, but could not get functionality working within
> > that, and I was told that I need to use Fragments within the ViewPager.
>
> > I went with this tutorial instead:
>
> >http://tamsler.blogspot.co.uk/2011/11/android-viewpager-and-fragments...
>
> > I have got the basics of a ViewPager with a Fragment working:
>
> > FragmentPagerActivity.java
>
> >     import android.os.Bundle;
> >     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;
>
> >      public class FragmentPagerActivity extends FragmentActivity {
>
> >         private static final int NUMBER_OF_PAGES = 10;
>
> >         private ViewPager mViewPager;
> >         private MyFragmentPagerAdapter mMyFragmentPagerAdapter;
>
> >         public void onCreate(Bundle savedInstanceState) {
>
> >              super.onCreate(savedInstanceState);
> >              setContentView(R.layout.main);
> >              mViewPager = (ViewPager) findViewById(R.id.viewpager);
> >              mMyFragmentPagerAdapter = new
> > MyFragmentPagerAdapter(getSupportFragmentManager());
> >              mViewPager.setAdapter(mMyFragmentPagerAdapter);
> >         }
>
> >         private static class MyFragmentPagerAdapter extends
> > FragmentPagerAdapter {
>
> >              public MyFragmentPagerAdapter(FragmentManager fm) {
> >                   super(fm);
> >              }
>
> >              @Override
> >              public Fragment getItem(int index) {
>
> >                   return PageFragment.newInstance("My Message " + index);
> >              }
>
> >              @Override
> >              public int getCount() {
>
> >                   return NUMBER_OF_PAGES;
> >              }
> >         }
> >      }
>
> > PageFragment.java:
>
> >     import android.os.Bundle;
> >     import android.support.v4.app.Fragment;
> >     import android.view.LayoutInflater;
> >     import android.view.View;
> >     import android.view.ViewGroup;
> >     import android.widget.TextView;
>
> >     public class PageFragment extends Fragment {
>
> >        public static PageFragment newInstance(String title) {
>
> >          PageFragment pageFragment = new PageFragment();
> >          Bundle bundle = new Bundle();
> >          bundle.putString("title", title);
> >          pageFragment.setArguments(bundle);
> >          return pageFragment;
> >      }
>
> >      @Override
> >      public void onCreate(Bundle savedInstanceState) {
> >          super.onCreate(savedInstanceState);
> >      }
>
> >      @Override
> >      public View onCreateView(LayoutInflater inflater, ViewGroup
> > container, Bundle savedInstanceState) {
>
> >          View view = inflater.inflate(R.layout.fragment, container,
> > false);
> >          TextView textView = (TextView)
> > view.findViewById(R.id.textView1);
> >          textView.setText(getArguments().getString("title"));
> >          return view;
> >      }
> >     }
>
> > main.xml:
>
> >     <?xml version="1.0" encoding="utf-8"?>
> >     <LinearLayout xmlns:android="
> >http://schemas.android.com/apk/res/android"
> >         android:layout_width="fill_parent"
> >         android:layout_height="fill_parent"
> >         android:orientation="vertical" >
> >     <android.support.v4.view.ViewPager
> >             android:id="@+id/viewpager"
> >             android:layout_width="fill_parent"
> >             android:layout_height="fill_parent" />
>
> >     </LinearLayout>
>
> > fragment.xml:
>
> >     <?xml version="1.0" encoding="utf-8"?>
> >     <LinearLayout xmlns:android="
> >http://schemas.android.com/apk/res/android"
> >         android:layout_width="match_parent"
> >         android:layout_height="match_parent"
> >         android:orientation="vertical" >
>
> >         <TextView
> >             android:id="@+id/textView1"
> >             android:layout_width="wrap_content"
> >             android:layout_height="wrap_content"
> >             android:text="TextView" />
>
> >     </LinearLayout>
>
> > I want to be able to replace the current layout within the ViewPager with
> > 7 of my own layouts that already exist and add functionality to the layouts
> > using Fragments. What can I do with the code that I already have and the
> > changes to make to get this properly working?
>
> > If there are any examples of a ViewPager with Fragments available online
> > as well rather than just going briefly over it like the do in the Adroid
> > Developers blog, I will be very grateful.- Hide quoted text -
>
> - Show quoted text -


Dear Nikhil,


I am facing the same problem, where I need to create 3 fragments with
different controls on them.

I created 3 classes for respective fragments, however I am not able to
return the Fragment object from the getItem method()

What I did in the getItem method is just used switch case and created
new objects and returned them (As suggested by you in the above
answer.)

However its giving me an error that cannot convert from
MyFragmentClass1 to Fragment.
(MyFragmentClass1 is Fragment class which represents 1st fragment that
I need to show.)

Please suggest if I have done anything wrong.

Thanks,

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment