2013-04-24 14 views
5

Sono un neofita della programmazione Android e sto provando a creare un'app che utilizzi schede in un viewpager da una frammentattività principale. Il viewpager e le schede funzionano bene ma voglio avere un menu di opzioni che quando un elemento è selezionato, apre un frammento completamente nuovo, ma non riesco a rimuovere il pager della vista. Vorrei solo essere in grado di mettere il nuovo frammento sul viewpager sullo schermo principale ma provare a farlo con un frammenttransaction non sembra funzionareAndroid Open Fragment su ViewPager

Qualche idea?

Grazie per il vostro tempo

risposta

2

Beh, verrà aggiunto il Fragment ad alcuni FrameLayout utilizzando l'ID del FrameLayout presumo. Assicurati semplicemente che losi aggiunga a Fragment sopra lo ViewPager.

Per esempio, se sia il ViewPager e FrameLayout sono in un contenitore RelativeLayout quindi assicurarsi che la FrameLayout è dichiarato sotto il ViewPager nel XML. Questo impilerà lo FragmeLayout in cima allo ViewPager. Quando lo Fragment viene aggiunto allo FrameLayout, verrà disegnato sopra.

2

Assicurarsi che:

1) vostro frammento (es: ViewPagerFragment1), che sarà selezionato dal viewpager, ha un FrameLayout il layout radicolare con l'id "contenitore" es:

<FrameLayout 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:id="@+id/container" 
xmlns:android="http://schemas.android.com/apk/res/android"> 

     <LinearLayout.... and so on 
</FrameLayout> 

2) All'interno della classe ViewPagerFragment1, devi sostituire/aggiungere il nuovo frammento al FrameLayout dopo che un'azione è stata attivata. Es .:

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.selection: 
      // Create new fragment and transaction 
      NewFragment newFragment = new NewFragment(); 
      FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

      transaction.replace(R.id.container, newFragment, "NewFragment"); 
      transaction.addToBackStack(null); 

      transaction.commit(); 
      break; 
     default: 
      break; 
    } 
}