Pergunta
Suponha que eu tenha um xml de layout simples como o seguinte:
botão.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" />
Há alguma diferença nas seguintes chamadas?e qual devo usar?
button = (Button) getLayoutInflater().inflate(R.layout.button, null);
e
View v = getLayoutInflater().inflate(R.layout.button, null);
button = (Button) v.findViewById(R.id.button01);
Nenhuma solução correta
Outras dicas
Este cria uma nova visualização com o layout fornecido onde 'R.layout.button' é gerado pelo nome do arquivo xml 'button.xml'.Cada vez que você chamar .inflate(...) você obterá uma nova instância.
View v = getLayoutInflater().inflate(R.layout.button, null);
--
Enquanto aquele encontra uma visualização existente dentro de um layout onde R.id.button01 é gerado pelo nome de id 'android:id="@+id/button01"'.Cada vez que você chamar .findViewById(R.id.button01) você obterá a mesma instância, pois a visualização 'v' será a mesma.
button = (Button) v.findViewById(R.id.button01);
A primeira opção é mais limpa e um pouco mais eficiente.
Seu layout inflater retornará um Button
. Com a primeira opção, você ganha acesso ao Button
diretamente. Com a segunda opção, você lança o botão para um View
E, em seguida, procure a visualização com um determinado ID, que é uma comparação extra inútil, já que a visualização com o ID que você está procurando na hierarquia é o próprio botão. Então, na segunda opção, v == button
.