Expectativa de puntero nulo al configurar LayoutParams
Creé el botón en la actividad programmaticaly, no en archivo del xml. A continuación, quería configurar LayoutParams como en este enlace: ¿Cómo establecer mediante programación el atributo layout_align_parent_right de un botón en Disposición relativa?
Pero cuando intenté lanzar, tuve una excepción.
- ANDROID: Habilitar y deshabilitar MenuItem en el esquema de la actividad del cajón de navegación
- FindViewById devuelve null para WebView
- ¿Qué es una NullPointerException y cómo puedo solucionarlo?
- Causa de NullPointerException android.support.v7.widget.RecyclerView.onMeasure
- Puntero nulo al obtener la intención extra
Aquí está mi código:
RelativeLayout ll2 = new RelativeLayout(this); //ll2.setOrientation(LinearLayout.HORIZONTAL); ImageButton go = new ImageButton(this); go.setId(cursor.getInt(cursor.getColumnIndex("_id"))); go.setClickable(true); go.setBackgroundResource(R.drawable.go); RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams)go.getLayoutParams(); params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // LogCat said I have Null Pointer Exception in this line go.setLayoutParams(params1); go.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i3 = new Intent(RecipesActivity.this, MedicineActivity.class); i3.putExtra(ShowRecipe, v.getId()); i3.putExtra("Activity", "RecipesActivity"); RecipesActivity.this.startActivity(i3); } }); ll2.addView(go);
¿Por qué mi aplicación genera una excepción? Gracias.
- ActionBarActivity getSupportActionBar (). Hide () lanza NullPointerException
- NullPointerException al crear un nuevo cuadro de diálogo
- NullPointerException cuando el acceso a la matriz en la clase
- Intentar invocar método virtual
- Comportamiento impredecible causado por PackageManager.DONT_KILL_APP
- Establecer un elemento de menú tal como se ha comprobado desde el código
- ¿Qué puedo hacer para solucionar un error de excepción de puntero nulo de Android SDK?
- Diferencia entre getExtras (nombre) .getString y getIntent (). GetStringExtra (nombre)
Cambia esto:
RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams)go.getLayoutParams(); params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); go.setLayoutParams(params1);
para:
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); go.setLayoutParams(params1);
Cuando crea una Vista de forma programática, no tiene LayoutParams, es por eso que obtiene NullPointerException. Si infla la vista desde XML, la vista se presenta ahora con LayoutParams.
Por lo que veo, parece que
go.getLayoutParams()
devuelve null
en esta línea
RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams)go.getLayoutParams();
porque no tiene LayoutParams
establecido para ello. Esto obviamente hará que params1
null
para obtener NPE
aquí
params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
cuando intenta ejecutar un método en él ( addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
)
getLayoutParams()
es para una View
que tiene params
ya establecidos. Por lo que tendrá que configurarlos para go
antes de tratar de get
que se utilice para otra View
Este método puede devolver null si esta vista no está asociada a un ViewGroup padre o {@link #setLayoutParams (android.view.ViewGroup.LayoutParams)} no se ha invocado correctamente. Cuando una vista está asociada a un grupo de vista principal, este método no debe devolver null.
De acuerdo con la anotación de getLayoutParams()
en el View.java, su ImageButton se crea programly y no está conectado a un ViewGroup padre cuando se llama al método, por lo que devuelve null.
- No se puede inflar la barra de herramientas en dispositivos pre-L
- Error al utilizar la Biblioteca de asistencia de Android v4