Android agrega programaticamente ImageView

Acabo de comenzar a aprender la programación de Android. Creé un nuevo proyecto (API 19) con una actividad en blanco y traté de agregar un ImageView como este: (en el onCreate de MainActivity ())

setContentView(R.layout.activity_main); View view = (View) findViewById(R.layout.activity_main); LinearLayout picLL = new LinearLayout(MainActivity.this); picLL.layout(0, 0, 100, 100); picLL.setLayoutParams(new LayoutParams(100, 100)); picLL.setOrientation(LinearLayout.HORIZONTAL); ((ViewGroup) view).addView(picLL); // <- This is line 36 ImageView myImage = new ImageView(this); myImage.setImageResource(R.drawable.ic_launcher); picLL.addView(myImage); 

Sin embargo, la aplicación se bloquea inmediatamente después del inicio. He intentado muchas otras respuestas de Stackoverflow, pero ninguna funcionó. Parece que hay algo que me falta …

Esta es la salida LogCat:

 04-17 10:02:35.611: E/AndroidRuntime(1402): FATAL EXCEPTION: main 04-17 10:02:35.611: E/AndroidRuntime(1402): Process: com.example.test, PID: 1402 04-17 10:02:35.611: E/AndroidRuntime(1402): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.access$800(ActivityThread.java:135) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.os.Handler.dispatchMessage(Handler.java:102) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.os.Looper.loop(Looper.java:136) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.main(ActivityThread.java:5017) 04-17 10:02:35.611: E/AndroidRuntime(1402): at java.lang.reflect.Method.invokeNative(Native Method) 04-17 10:02:35.611: E/AndroidRuntime(1402): at java.lang.reflect.Method.invoke(Method.java:515) 04-17 10:02:35.611: E/AndroidRuntime(1402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 04-17 10:02:35.611: E/AndroidRuntime(1402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 04-17 10:02:35.611: E/AndroidRuntime(1402): at dalvik.system.NativeStart.main(Native Method) 04-17 10:02:35.611: E/AndroidRuntime(1402): Caused by: java.lang.NullPointerException 04-17 10:02:35.611: E/AndroidRuntime(1402): at com.example.test.MainActivity.onCreate(MainActivity.java:36) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.Activity.performCreate(Activity.java:5231) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 04-17 10:02:35.611: E/AndroidRuntime(1402): ... 11 more 04-17 10:02:38.771: I/Process(1402): Sending signal. PID: 1402 SIG: 9 

Sucede porque está intentando encontrar el ID de View por disposición.

 View view = (View) findViewById(R.layout.activity_main); 

Tiene dos opciones: Puede agregar cualquier ID para el elemento raíz en activity_main.xml . Por ejemplo, será root_layout_id . Entonces usted puede encontrarlo como:

 View view = (View) findViewById(R.id.root_layout_id); 

La segunda opción es crear el diseño de forma programática. Cambie su método onCreate () así:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout picLL = new LinearLayout(this); picLL.layout(0, 0, 100, 100); picLL.setLayoutParams(new LayoutParams(100, 100)); picLL.setOrientation(LinearLayout.HORIZONTAL); ImageView myImage = new ImageView(this); myImage.setImageResource(R.drawable.ic_launcher); picLL.addView(myImage); setContentView(picLL); } 
  • Seleccione una parte de la imagen en ImageView y obtenga los puntos finales del rectángulo seleccionado
  • Cómo obtener el nombre de la imagen en java?
  • Cómo agregar una sombra y un borde en circular imageView android?
  • Cómo recortar Bitmap Center like imageview?
  • Cómo centrar un Imageview en la pantalla con un FrameLayout? (Con código java)
  • Cómo hacer una imagen en forma circular?
  • Disposiciones de Android y redimensionamiento automático de imágenes
  • Mostrar la imagen de réplica con imagen especular en android
  • Cómo poner vistas en la parte superior de un ImageView, en relación con el tamaño del contenido de ImageView?
  • Copiar contenido de mapa de bits de un ImageView a otro
  • Gire la vista de imagen alrededor de su centro sin cortar sus bordes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.