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);
}