Android: Viewpager all'interno di un frammento di cassetto di navigazione

Sto attualmente sviluppando un'applicazione Android per cui ho bisogno di implementare un Viewpager o tabs all'interno di un frammento di cassetto di navigazione. Ho già implementato il cassetto di navigazione da questo tutorial: Tutorial del cassetto di navigazione

Ora ho il mio cassetto di navigazione composto da 3 frammenti. Frammento A, Frammento B, Frammento C

  • Accesso a Google API - GoogleAccountCredential.usingOAuth2 vs GoogleAuthUtil.getToken ()
  • Margini di widget non applicati al telefono ICS con il lancio di TouchWiz?
  • l'integrazione di org.apache.poi e il pacchetto javax.xml.stream. * (stax-api) in android - come impostare l'argomento della libreria -distanza in Android Studio?
  • Come evidenziare il text filtrato durante l'utilizzo del widget SearchView in android
  • Come fare un cilindro in scrittura
  • PackageManager.getApplicationIcon () che restituisce l'icona predefinita?
  • sul frammento A come posso aggiungere un Viewpager per questo frammento?

  • Libreria di design Android 25.1.0 causa FloatingActionButton.Behavior per smettere di funzionare
  • Android LogCat Filter per più tag in Eclipse
  • Posizionamento di SupportMapFragment su DialogFragment
  • WebView non riempie l'integer schermo del dispositivo o dell'emulatore
  • IllegalArgumentException: la colonna '_id' non esiste quando si chiama SimpleCursorAdaptor
  • SharedPreferences in BroadcastReceiver sembra non essere aggiornato?
  • 4 Solutions collect form web for “Android: Viewpager all'interno di un frammento di cassetto di navigazione”

    Questo è sicuramente ansible. Devi solo usare frammenti di figli per il viewpager. Altrimenti l'attuazione è semplice. Creare un'adattatore pager personalizzato, utilizzare l'API api viewpager standard

    Estendere FragmentPagerAdapter come così:

    private class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter (FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch (i) { case 0: return Fragment1; case 1: return Fragment2; } } @Override public int getCount() { return 2; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return FRAGMENT_1_NAME; case 1: return FRAGMENT_2_NAME; } } 

    Avnetworking bisogno di un layout con un viewpager ovviamente, quindi assicuratevi di collegarlo in questo modo nel frammento A:

     myPagerAdapter = new MyPagerAdapter(this.getChildFragmentManager()); myPager = (ViewPager) mRoot.findViewById(R.id.pager); myPager.setAdapter(myPagerAdapter); 

    Si noti che dovrai utilizzare la libreria di supporto e i frammenti di supporto a less che il SDK minimo non sia 4.2 o superiore, poiché i frammenti figlio sono API 17

    Questo è ansible per Android <4.2. Nel tuo frammento Un metodo onCreateView , quando sta gonfiando la View principale, getta il tuo layout che contiene il android.support.v4.view.ViewPager :

     View rootView = inflater.inflate(R.layout.your_viewpager_layout, container, false); 

    your_viewpager_layout.xml è qualcosa di simile a quanto segue:

     <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.yourapp.YourActivity" /> 

    Quindi, nel metodo FragmentPagerAdapter.getItem(int position) , restituisci il Fragment che desideri visualizzare nel tuo ViewPager , come farebbe in un ViewPager "normale".

    Esiste una class ViewPager che fa parte della libreria di supporto. Dovresti essere in grado di utilizzare questo insieme con un PagerAdapter.

    Qui si va .. prima la tabulazione o la vista pager fragile class ..

     public class TabbedFragment extends Fragment { private SectionsPagerAdapter mSectionsPagerAdapter; public static final String TAG = TabbedFragment.class.getSimpleName(); /** * The {@link ViewPager} that will host the section contents. */ ViewPager mViewPager; public static TabbedFragment newInstance() { return new TabbedFragment(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_viewpager_network, container, false); mSectionsPagerAdapter = new SectionsPagerAdapter( getChildFragmentManager()); mViewPager = (ViewPager) v.findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); return v; } public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a DummySectionFragment (defined as a static inner class // below) with the page number as its lone argument. if (position == 0) return FragmentOne.getInstance(); else return FragmentTwo.getInstance(); } @Override public int getCount() { // Show 2 total pages. return 2; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return "Fragment 1"; case 1: return "Fragment 2"; } return null; } } } 

    il file xml tabbed_fragment.xml

     <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- This title strip will display the currently visible page title, as well as the page titles for adjacent pages. --> <android.support.v4.view.PagerTitleStrip android:id="@+id/pager_title_strip" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#33b5e5" android:paddingBottom="4dp" android:paddingTop="4dp" android:textColor="#fff" /> </android.support.v4.view.ViewPager> 

    uso nella class di attività che utilizza il cassetto di navigazione, Nota: ho utilizzato il codice del cassetto di navigazione pre dato da android studio 1.2

     @Override public void onNavigationDrawerItemSelected(int position) { boolean isChild = getSharedPreferences(Constansts.PREFERENCE_NAME,0).getBoolean(Constansts.IS_CHILD,false); Fragment fragment = null; if (lastSelectedPosition == position) return; lastSelectedPosition = position; switch (position) { case 0: fragment = HomeFragment.getInstance(); break; case 1: fragment = HomeFragment.getInstance(); break; case 2: fragment = UserProfileFragment.getInstance(); break; case 3: fragment = TabbedFragment.getInstance(); break; } if (fragment == null) { fragment = HomeFragment.getInstance(); } fragmentManager = getSupportFragmentManager(); fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.container, fragment).addToBackStack(mTitle.toString()); fragmentTransaction.commit(); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.