studio programacion móviles libro desarrollo curso aplicaciones android layout

móviles - manual de programacion android pdf



Android: findviewbyid: encontrar vista por id cuando la vista no está en el mismo diseño invocado por setContentView (4)

Es imposible. Solo puede encontrar y acceder a las vistas que se están ejecutando actualmente. Si quiere verificar el valor de ej. TextView utilizado en la actividad anterior debe guardar el valor es SharedPreferences, database, file o pass by Intent.

Tengo una actividad MyActivity que se extiende desde MapActivity. En el archivo .xml que contiene el diseño, solo puedo incluir MapView

<com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/trail_map_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="key" />

Sin embargo, sí necesito encontrar otra vista que esté ubicada en otro archivo .xml. Desafortunadamente, findViewById devuelve null. ¿Cómo puedo obtener la vista que estoy buscando?

¡Muchas gracias!


Gracias por comentar, entiendo lo que quieres decir, pero no quise verificar los valores anteriores. Solo quería obtener un puntero a esa vista.

Al mirar el código de alguien, acabo de encontrar una solución, puede acceder a la raíz de un diseño usando LayoutInflater .

El código es el siguiente, donde this es una Actividad:

final LayoutInflater factory = getLayoutInflater(); final View textEntryView = factory.inflate(R.layout.landmark_new_dialog, null); landmarkEditNameView = (EditText) textEntryView.findViewById(R.id.landmark_name_dialog_edit);

Básicamente, obtenga el inflador para this contexto, acceda a la vista raíz a través del método findViewById y, finalmente, llame a findViewById en la vista raíz del diseño.

¡La esperanza es útil para alguien! Adiós


He cambiado en mi actividad pero efectuado. Aquí está mi código:

View layout = getLayoutInflater().inflate(R.layout.list_group,null); try { LinearLayout linearLayout = (LinearLayout) layout.findViewById(R.id.ldrawernav); linearLayout.setBackgroundColor(Color.parseColor("#ffffff")); } catch (Exception e) { } }


tratar:

Activity parentActivity = this.getParent(); if (parentActivity != null) { View landmarkEditNameView = (EditText) parentActivity.findViewById(R.id. landmark_name_dialog_edit); }