¿Por qué findViewById (…) devuelve null?

findViewById está devolviendo null para mí en un widget ImageView. No hay error y nada en logcat que indica lo que está pasando. La coincidencia del id y otras vistas de imagen se están configurando correctamente. Java y xml están enlazados por la etiqueta de clase en xml que apunta a la clase definida en java que es un descendiente de RelativeLayout.

Intenté cambiar el nombre de R.id.more_icon1 y eso no funcionó. Probamos la limpieza y que no funcionaba. Usado depurador para ver que realmente se mueve en pasado y cuando devuelve mMoreIcon == null.

Lo que es extraño es que el trabajo de otro ImageView está bien.

¿Alguien ha visto esto antes o tiene alguna idea?

Java Code: Class es un descendiente de RelativeLayout

@Override protected void onFinishInflate() { super.onFinishInflate(); mText1 = (TextView) findViewById(R.id.text1); mText2 = (TextView) findViewById(R.id.text2); mIcon1 = (ImageView) findViewById(R.id.icon1); mIcon2 = (ImageView) findViewById(R.id.icon2); // mMoreIcon is the one that gets set as null. mIcon1 and mIcon2 work just fine. mMoreIcon = (ImageView) findViewById(R.id.more_icon1); } 

Código XML:

 <ImageView android:id="@+id/icon1" style="@style/SuggestionIcon1" android:scaleType="centerInside" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" /> <!-- This is the icon that is being returned as null --> <ImageView android:id="@+id/more_icon1" style="@style/MoreIcon2" android:scaleType="centerInside" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:visibility="gone" /> <ImageView android:id="@+id/icon2" style="@style/SuggestionIcon2" android:scaleType="centerInside" android:layout_toLeftOf="@id/more_icon1" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:visibility="gone" /> 

Gracias

Tuve un problema similar y mi problema era que findviewbyid sólo encontrar las vistas de los niños. Si la vista es un hermano que tendría que llamar desde el padre. La actividad debe ser capaz de encontrarlo.

Recientemente tuve un problema similar al usar el android: visibility = "gone"

 <RelativeLayout android:id="@+id/relativeLayoutMessage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/linearLayoutMenu" android:layout_above="@+id/layoutButtons"> <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:contentDescription="@string/image_attachment" android:src="@drawable/icon" android:scaleType="fitCenter" android:layout_height="fill_parent" android:layout_alignParentTop="true" /> <TextView android:id="@+id/textViewTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:textSize="20dip" android:layout_alignParentTop="true"/> <TextView android:id="@+id/textViewText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" android:gravity="center" android:layout_below="@+id/textViewTitle"/> </RelativeLayout> 

Con el ImageView encima de TextViews, la aplicación se bloquearía en la línea siguiente.

Archivo Java:

  setContentView(R.layout.display_image); imageView = (ImageView) findViewById(R.id.imageView); 

Si moví el ImageView por debajo de TextViews, la aplicación se ejecutaría, pero las TextViews fueron cubiertas por ImageView.

Una vez que he eliminado el android: visibility = "ido", el findViewById resuelto correctamente. Todo lo que tenía que hacer era fijar la visibilidad en el código después.

 textViewText.setVisibility(TextView.GONE); 

Yo tuve este problema también. Este era mi código:

 RelativeLayout ml = (RelativeLayout) findViewById(R.id.layout); public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_the_next); 

Después de cambiarlo a esto funcionó:

 RelativeLayout ml; public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_the_next); ml = (RelativeLayout) findViewById(R.id.layout); 

Parece que si instanciar su diseño antes de setContentView () devuelve null.

  • AppWidgetProvider: onAppWidgetOptionsChanged no se llama en la ubicación del widget
  • Entrada de funciones matemáticas como, logos coseno-tangentes en Android
  • Posición del botón de Android mediante programación
  • Cómo acceder a las imágenes predeterminadas de Android (por ejemplo, la imagen para el pulgar de seekbar cuando se presiona) de código java?
  • Problemas con appwidget appWidgetIds (instancias reales y fantasmas de widget)
  • Cómo acoplar el diseño relativo al fondo de la pantalla
  • Cómo deshabilitar copiar / pegar de / a EditText
  • Permitir a los usuarios introducir un nuevo valor en Spinner
  • ¿Cómo iniciar un PopupWindow o un diálogo de un servicio de método de entrada?
  • Crear una burbuja de chat en Android
  • Android: My App Widget con ListView no se actualiza a través del botón o período de actualización
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.