Stack Overflow en español Asked on December 18, 2021
Estoy tratando de hacer un menuitem personalizado pero al intentar obtener una propiedad de la clase personalizada me da java.lang.NullPointerException
este es mi codigo:
activity_main.xml
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/main.xml" />
main.xml
<menu>
<item
android:id="@+id/nav_newversion"
tools:ignore="MenuTitle"
app:actionViewClass="com.package.meteorocorte.customitem" />
</menu>
customitem.java
public class customitem extends LinearLayout {
TextView text=new TextView(getContext());
public customitem(Context context) {
super(context);
setOrientation(VERTICAL);
setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
setBackgroundColor(Color.GREEN);
setPadding(0,12,0,12);
text.setText(("hola"));
text.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
text.setTextColor(Color.BLACK);
addView(text);
}
public TextView getText() {
return text;
}
}
MainActivity.java
MenuItem item=((NavigationView)findViewById(R.id.nav_view)).getMenu().getItem(0);
item.setVisible(true);
TextView text= ((customitem) item.getActionView()).getText();//aqui me da java.lang.NullPointerException
y si se preguntaronn si servia la personalización les dejo la imagen:
Es correcto la mayoría de lo que realizas, obtienes el elemento del NavigationView
, esto debería funcionar sin problema:
MenuItem item=((NavigationView)findViewById(R.id.nav_view)).getMenu().getItem(0);
TextView text= ((customitem) item.getActionView()).getText();
Pero es super importante que en el archivo del menu main.xml
el elemento sea en verdad el primero (indice 0)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/nav_newversion"
tools:ignore="MenuTitle"
app:actionViewClass="com.package.meteorocorte.customitem" />
</menu>
y la clase customitem
en verdad se encuentre en el paquete: "com.package.meteorocorte", asegura estas dos cosas y te aseguro realizaras sin problema lo que deseas.
Answered by Elenasys on December 18, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP