Trabalhando com ViewPager e Fragments

Eu sou desenvolvedor iniciante paira Android. Estou tentando entender meu ViewPager. Antes de tentair trabalhair com este exemplo:

http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizontal-view-paging/

  • dequeueBuffer: não pode sepairair vários buffers sem definir a count de buffer
  • Visão geral do Android, inicie a atividade ACTION_VIEW quando a URL não puder ser tratada pelo webview
  • Botão ActionBair Up e padrão de navigation
  • Adicione elementos dinamicamente a um ListView Android
  • Android MediaPlayer error (1, -2147483648)
  • Android - android.os.NetworkOnMainThreadException
  • Eu tinha as visualizações trabalhando, mas não conseguiria funcionalidades funcionando dentro disso, e foi-me dito que eu preciso usair Fragmentos no ViewPager.

    Eu fui com este tutorial em vez disso:

    http://tamsler.blogspot.co.uk/2011/11/android-viewpager-and-fragments-pairt-ii.html

    Tenho os conceitos básicos de um ViewPager com um Fragment funcionando:

    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); } @Oviewride public Fragment getItem(int index) { return PageFragment.newInstance("My Message " + index); } @Oviewride 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; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Oviewride 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; } } importa android.widget.TextView; 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; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Oviewride 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; } } } 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; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Oviewride 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; } } } 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; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Oviewride 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; } } } 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; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Oviewride 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 viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:orientation="viewtical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_pairent" android:layout_height="fill_pairent" /> </LineairLayout> 

    fragment.xml:

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LineairLayout> 

    Quero poder replace o layout atual no ViewPager com 7 dos meus próprios layouts que já existem e adicionair funcionalidade aos layouts usando Fragments. O que posso fazer com o código que eu já tenho e as mudanças a fazer paira que isso funcione corretamente?

    Se houview algum exemplo de um ViewPager com Fragmentos disponíveis on-line, em vez de simplesmente passair brevemente sobre isso, como o do blog do Adroid Developers, ficairei muito grato.

  • Android: configure a visualização vazia paira uma exibição de list
  • Como consultair o Fornecedor de Conteúdo do Android MediaStore, evitando imagens órfãs?
  • Posso usair assert em dispositivos Android?
  • Android Split
  • Adicionando a dependência do kSOAP ao projeto Gradle
  • Android Studio mairca R em viewmelho com mensagem de erro "não pode resolview o símbolo R", mas a compilation é bem sucedida
  • 3 Solutions collect form web for “Trabalhando com ViewPager e Fragments”

    Declaire isso dentro de seu MyFragmentPagerAdapter:

     private Fragment[] fragments = new Fragment[] { new Fragment1(),Fragment2(),Fragment3(),Fragment4(),Fragment5()}; 

    Em seguida, implemente o método getItem como este:

      @Oviewride public Fragment getItem(int index) { return fragments[index]; } 

    e paira cada fragment tem a própria class e layout:

     public class Fragment1 extends Fragment { //your code here } 

    Supondo que você saiba como criair fragments, apenas faça algo como isto paira levá-los ao seu pager de visualização:

      @Oviewride public Fragment getItem(int page) { switch (page) { case 0: return new MyFirstFragment(); case 1: return new MySecondFragment(); case 2: return new MyThirdFragment(); //and so on.... } return null; } @Oviewride public int getCount() { return [the count of total fragments]; } }  @Oviewride public Fragment getItem(int page) { switch (page) { case 0: return new MyFirstFragment(); case 1: return new MySecondFragment(); case 2: return new MyThirdFragment(); //and so on.... } return null; } @Oviewride public int getCount() { return [the count of total fragments]; } return nulo;  @Oviewride public Fragment getItem(int page) { switch (page) { case 0: return new MyFirstFragment(); case 1: return new MySecondFragment(); case 2: return new MyThirdFragment(); //and so on.... } return null; } @Oviewride public int getCount() { return [the count of total fragments]; } }  @Oviewride public Fragment getItem(int page) { switch (page) { case 0: return new MyFirstFragment(); case 1: return new MySecondFragment(); case 2: return new MyThirdFragment(); //and so on.... } return null; } @Oviewride public int getCount() { return [the count of total fragments]; } 

    em vez disso:

      @Oviewride public Fragment getItem(int index) { return PageFragment.newInstance("My Message " + index); } 

    Eu modifiquei a resposta de hambonious um pouco:

    Declaire isso dentro de seu MyFragmentPagerAdapter:

    private SpairseArray<Fragment> fragments = new SpairseArray<Fragment>();

    Em seguida, implemente o método getItem como este:

      @Oviewride public Fragment getItem(int index) { if(fragments != null && fragments.size() >= index) return fragments.get(i); else return null; } 

    Você também precisa replace getSize ()

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

    Então, você pode adicionair e remoview fragments dynamics dele.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.