2013-09-21 10 views
8

Ho un LinearLayout con nessun bambino vedeaggiungendo dinamicamente molteplici frammenti di mio layout attività

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 


</LinearLayout> 

e voglio aggiungere dinamicamente un frammento o due frammenti secondo i requisiti in esso. sono consapevole di aggiungere un frammento ad esso ma come posso aggiungere due ai frammenti dinamicamente ad esso. ho due frammenti e all'interno di ciascun frammento scrivo seguente oncreateview

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     //return super.onCreateView(inflater, container, savedInstanceState); 
     View v=inflater.inflate(R.layout.frag1, container, false); 
     v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

     return v; 
    } 

sto provando ad aggiungere utilizzando il seguente codice ma il secondo frammento sta venendo sopra il primo.

FragmentTransaction ft=fm.beginTransaction(); 
     frag1 f=new frag1(); 
     frag2 ff=new frag2(); 


     ft.add(android.R.id.content, f); 
     ft.add(android.R.id.content, ff); 

     ft.commit(); 

gentilmente aggiornamento Come questo può essere fatto. grazie

+1

+1 Sto anche cercando la risposta a questa domanda ... Sembra una questione così importante, eppure non riesco a trovare una risposta:/- aggiungendo dinamicamente due frammenti in un layout di attività: mi sembra piuttosto roba standard ma non è coperto da nessuna parte. – AgentKnopf

+0

L'aggiornamento a questo è che non è possibile aggiungere due a android.R.id.content ma a un layout come LinearLayout o altro con un id come di seguito: se id uno è l'id del viewgroup quindi ft.add (R.id .one, f, "uno"); ft.add (R.id.one, ff, "due"); ft.commit(); gentilmente provalo e aggiorna – user2779311

+0

Grazie per avermi contattato :)! In realtà ho trovato un modo per ospitare due frammenti in una sola attività. Tutto ciò che è necessario fare è disporre di due contenitori nel layout, uno per ciascun frammento e quindi impostare un peso su di essi. Come: First Container ottiene il 30% dello spazio, il secondo contenitore ottiene il 70% dello spazio. Se hai bisogno di maggiori dettagli fammi sapere. La maggior parte è configurata nel file di layout, quindi è necessario modificare la transazione del frammento per aggiungerla all'ID del relativo contenitore di destinazione. – AgentKnopf

risposta

0

Questa shoudl fare il trucco:

FragmentTransaction ft=fm.beginTransaction(); 
    frag1 f=new frag1(); 
    frag2 ff=new frag2(); 
    LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

    ft.add(android.R.id.content, f).commit(); 
    FragmentTransaction ft=fm.beginTransaction(); // this line might be unnescessary 
    ft.add(android.R.id.content, ff).commit(); 
+0

è lo stesso che sto già scrivendo ma non funziona. – user2779311

+0

Dovrebbe funzionare se imposti i LayoutParam del tuo LinearLayout principale su wrap_content. – Ehsan

Problemi correlati