16

Ora per creare il frammento ho fatto i seguenti codici.Come creare a livello di programmazione il layout per un frammento?

nome

del file: fragment_a.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frag_a" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

</LinearLayout> 

In Java

public class FragA extends Fragment{ 
    View view_a; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     view_a = inflater.inflate(R.layout.fragment_a, container, false); 

     return view_a; 
    } 



} 

Ora ho bisogno di sapere se c'è un modo per creare una vista frammento senza creare un file XML e la scrittura di codice in vero?

Quello che sto cercando di dire è che non voglio creare un file xml per un frammento piuttosto voglio creare la vista per quel frammento usando il codice java.

È possibile?

+0

possibile ma non consigliabile. È più facile eseguire il debug usando xml piuttosto che hardcoded. – princepiero

+0

Perché non vuoi creare un xml e fondamentalmente xml e java sono partner nella criminalità quando programmi Android? – princepiero

+0

Stavo pensando di creare dinamicamente la vista di un frammento in modo tale che se cambio uno o due parametri posso usarlo con un altro frammento. – user2729183

risposta

30

Sì, certo che è possibile. Basta sostituire la linea di gonfiaggio con ad esempio il tuo CustomView.

public class FragA extends Fragment{ 

    View view_a; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     view_a = new YourCustomView(); 

     return view_a; 
    } 
} 

O come quella:

public class FragA extends Fragment{ 

     View view_a; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      view_a = new LinearLayout(getActivity()); 

      return view_a; 
     } 
    } 

o aggiungere altro Vista:

public class FragA extends Fragment{ 

     View view_a; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      LinearLayout ll = new LinearLayout(getActivity()); 
      ll.addView(new TextView(getActivity())); 

      view_a = ll; 

      return view_a; 
     } 
    }