2010-03-30 4 views
14

Supposons que j'ai un xml simple mise en page comme ce qui suit:gonfler vs findViewById

button.xml:

<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/button01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Y a-t-il des différences dans les appels suivants? et lequel devrais-je utiliser?

button = (Button) getLayoutInflater().inflate(R.layout.button, null); 

et

View v = getLayoutInflater().inflate(R.layout.button, null); 
button = (Button) v.findViewById(R.id.button01); 
+0

Oups, cela filtre mon code. ici: bouton \t xmlns: android = "http://schemas.android.com/apk/res/android" \t android: id = "@ + id/button01" \t android: layout_width = "wrap_content" \t android: layout_height = "wrap_content" –

Répondre

1

La première option est plus propre et un peu plus efficace.

Votre inflateur d'affichage renverra un Button. Avec la première option, vous accédez directement au Button. Avec la deuxième option, vous placez le bouton sur un View puis recherchez la vue avec un ID donné, ce qui est une comparaison inutile supplémentaire, car la vue avec l'ID que vous recherchez dans la hiérarchie se trouve être le bouton lui-même. Donc, dans la deuxième option, v == button.

13

Celui-ci crée une nouvelle vue avec la disposition donnée où 'R.outout.button' est généré par le nom du fichier xml 'button.xml'. Chaque fois que vous appelez .inflate (...) vous obtiendrez une nouvelle instance.

View v = getLayoutInflater().inflate(R.layout.button, null); 

-

Bien que l'on trouve une vue existante dans une mise en page où R.id.button01 est généré par le nom id 'android: id = "@ + id/button01". Chaque fois que vous appelez .findViewById (R.id.button01) vous obtiendrez la même instance puisque la vue 'v' sera la même.

button = (Button) v.findViewById(R.id.button01); 
Questions connexes