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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top