Interazione Java Xml in Android

3

Sto lavorando allo sviluppo di applicazioni Android. C'è una domanda che mi viene sempre in mente: come l'XML interagisce con il codice Java? Voglio dire Button in XML è una vista, ma Button in Java è una classe.

Per il popolamento e il layout XML utilizziamo setContentView(R.layout.name) . Quello che voglio sapere è come questo codice XML interagisce con Java, quale tecnica viene utilizzata e quale codice è dietro a questo. Se qualcuno lo sa, per favore, dimmelo in breve.

    
posta Dilip Kumar Chaudhary 23.02.2013 - 07:23
fonte

2 risposte

1

Per capire la relazione tra i due, devo prima chiarire una cosa. Dici che " Button in XML è una vista, ma Button in Java è una classe" che è vera ma un po 'stretta. Un Button in XML non è solo un View ma è anche una classe.

View è una classe Java. Button è una sottoclasse di View . Il layout XML in Android è solo un modo semplice per organizzare un numero di oggetti View per formare un'interfaccia utente. Tutto ciò che fai in un layout XML può essere fatto in codice Java e può realizzare esattamente la stessa cosa. Android ha questi XML di layout per semplificare il processo.

Considera il seguente esempio. Questi due scenari creeranno la stessa identica interfaccia utente.

Crea interfaccia utente con layout XML:

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black" >

    <LinearLayout android:id="@+id/left_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

MainActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

Crea interfaccia utente in codice Java:

MainActivity.java

public static final int LEFT_CONTAINER = 0x0710001B;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LinearLayout parent = new LinearLayout(this);
    parent.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    parent.setBackgroundColor(getResources().getColor(android.R.color.black));

    LinearLayout child = new LinearLayout(this);
    child.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    child.setId(LEFT_CONTAINER);
    parent.addView(child);

    setContentView(parent);
}

Ora questo è un layout molto semplice, quindi il codice richiesto per ciascun metodo è relativamente leggero. Se lo ridimensioniamo a un'interfaccia utente con più contenitori e più controlli, il metodo del codice Java inizia a diventare davvero disordinato e soggetto a errori. Stai anche creando la possibilità di più dipendenze sulla tua classe MainActivity poiché contiene gli ID dei layout al suo interno.

Utilizzando il layout XML, limita la maggior parte dei problemi di layout a un file separato e riduci la quantità di codice che deve essere scritta per creare l'interfaccia utente poiché la classe genitore Activity di Android gestirà tutto ciò per te. Inoltre, puoi ridurre le dipendenze incrociate facendo in modo che tutti gli ID di layout e di visualizzazione siano limitati alla tua classe R che Android genera per gli identificatori.

    
risposta data 25.02.2013 - 23:52
fonte
1

In sintesi, un layout XML è un modo per separare la costruzione della gerarchia View dal codice Android / Java. Questo ti aiuta a modificare e modificare facilmente il layout dell'interfaccia utente.

Quando imposti un layout XML utilizzando setContentView(R.layout.mylayout) , Android gonfierà internamente mylayout.xml e creerà una classe LinearLayout e la aggiungerà al Root View.

    
risposta data 17.03.2013 - 16:15
fonte

Leggi altre domande sui tag