Vamos directo al código.findViewById devuelve nulo en una vista <include>
Código de actividad, el método onCreate
setContentView(R.layout.main);
View main_view = findViewById(R.id.main_view);
View view_flipper = main_view.findViewById(R.id.vf);
View first_tab = view_flipper.findViewById(R.id.prev_pane);
El código de diseño main.xml:
<ViewFlipper android:id="@+id/vf"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include android:id="@+id/prev_pane" layout="@layout/vf_inner" />
<include android:id="@+id/cur_pane" layout="@layout/vf_inner" />
<include android:id="@+id/next_pane" layout="@layout/vf_inner" />
</ViewFlipper>
El problema! La vista principal se encuentra correctamente, por lo que ViewFlipper, pero prev_pane o cur_pane o next_pane no se encuentran, se devuelve un puntero nulo. ¿Alguna idea de por qué?
Esta actividad se invoca a través de una pestaña mediante el uso de una intención. Todas las referencias se resuelven correctamente a excepción de identificación en incluye
Cuando examino las variables, encuentro el contenido de la disposición vf_inner en mChildren
Bueno, todos los paneles son idénticos, sin embargo, deben tener diferente contenido. ¿Cómo puedo conseguir esto? Todas las vistas incluidas contienen una imagen y una vista de texto con una ID. La imagen permanece estática, pero el texto es diferente para todos los paneles. – Artis
Oh, ya veo. Creo que XML es limitado en ese sentido * (al menos no tengo idea atm) *. Sin embargo, puedes construir esto desde el código. Infle tres instancias del diseño mediante el uso del servicio de inflado de diseño, use 'setId()' en las vistas infladas. Luego busque ViewFlipper a través de 'findViewById()' y agregue los tres diseños a través de 'ViewFlipper.addView()'. –
Tenga en cuenta que también puede hacer referencia a los elementos secundarios de ViewFlipper a través de ['ViewFlipper.getChildAt (index)'] (http://developer.android.com/reference/android/view/ViewGroup.html#getChildAt (int)) en lugar de su id. P.ej. como: 'Ver first_tab = view_flipper.getChildAt (0)'. –