2014-04-23 2 views
5

Allego il frammento (molti frammenti a FrameLayout) di un Activity ogni frammento ha la propria vista gonfiato in onCreateView().frammento suCreateView chiamato più volte

Ora,

Se ruotare lo schermo Paesaggio/Protrait la onCreateView() del frammento si chiama invece di chiamare il suo metodo allegato di attività onCreate(). Per questo motivo la vista è resa due volte.

Voglio che l'attività onCreate() venga chiamata ogni volta che si modifica una configurazione. È possibile?

attività:MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    getSupportFragmentManager().beginTransaction() 
     .add(R.id.layout_replace, new MyFragment()).commit(); 
} 

Frammento:MyFragment.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {   
    return (ScrollView)inflater.inflate(R.layout.some_layout, container, false); 
} 
+0

Quando si ruota, il 'Activity' è distrutto e avviato. se un 'Fragment' è allegato,' onCreateView() 'sarà chiamato. Potresti mostrare una parte del tuo codice? –

+0

@FlorianMacLanglade Ho aggiornato il mio codice di esempio – yashhy

+0

È necessario aggiungere dinamicamente il frammento? In caso contrario, puoi dichiarare il frammento direttamente nel tuo layout xml. – sddamico

risposta

17

fisso questo !!

Il problema reale era con FragmentTransaction per il quale sto aggiungendo i frammenti utilizzando .add() che causa il popolamento della vista due volte.

usare al posto:

.replace(R.id.yourId, fragment)