2010-02-16 18 views
35

Tengo una actividad MyActivity que se extiende desde MapActivity. En el archivo .xml que contiene la disposición que sólo pueden incluir MapViewAndroid: findviewbyid: buscando ver por id cuando la vista no está en el mismo diseño invocado por setContentView

<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, yo necesito encontrar otro punto de vista que se encuentra en otro archivo .xml. Desafortunadamente, findViewById devuelve null. ¿Cómo puedo obtener la vista que estoy buscando?

¡Muchas gracias!

+0

¿Por qué necesitarías eso? ¿Que estás tratando de hacer? – Macarse

+0

Es una situación común para mostrar una vista que no está presente. Por ejemplo, si desea que una vista se muestre cuando un usuario realiza una acción, como presionar un botón, hacer clic en un ícono de menú, etc. – hexicle

Respuesta

62

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

Al mirar el código de alguien que 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); 

consigue básicamente el inflado de this contexto, acceder a la vista de la raíz a través del método de inflado y finalmente llaman findViewById en la vista raíz de la disposición.

¡La esperanza es útil para alguien! Bye

0

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.

+10

imposible, no es nada. –

0

intento:

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

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) { 

     } 

    } 
Cuestiones relacionadas