¿Por qué getActionView () devuelve null
He estado buscando una solución para esto durante horas. Sólo quiero agregar un conmutador en la barra de acción (como en la configuración de Bluetooth). Encontré una pregunta similar aquí, pero probablemente era vieja. De todas formas aquí está mi código:
Actividad principal:
- Cómo agregar una vista personalizada en el JellyBean Launcher de android
- Cómo configurar el logotipo de ActionBar en Text (TextView)?
- La conexión Bluetooth falló "java.io.IOException: se ha producido un error en la lectura, el socket puede cerrarse o el tiempo de espera, leer ret: -1"
- ¿Derivados en Java?
- ¿Cómo puedo un punto de coordenadas por radio con otro punto de coordenadas y distancia en Km?
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); MenuItem item = menu.findItem(R.id.myswitch); switchButton = (Switch) item.getActionView(); return super.onCreateOptionsMenu(menu); }
Menu_main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_switch" android:title="off/on" app:showAsAction="always" app:actionLayout="@layout/switchlayout" app:actionViewClass="android.support.v7.widget.Switch" /> </menu>
Switchlayout.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Switch android:id="@+id/myswitch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:background="#1E88E5" /> </RelativeLayout>
Pero no importa lo que hago siempre tengo:
Intenta invocar … getActionView () 'en una referencia de objeto nulo
Estoy confundido porque acabo de definir el tema de la línea antes de R.id.myswitch
se define, ¿me lío que hasta?
- ¿Cómo puedo determinar las coordenadas de longitud y latitud para crear un radio de 1 milla alrededor de la ubicación de un usuario?
- Cómo instalar Android Market en el emulador para todos los api
- ¿Cómo GCM localiza un teléfono de usuario?
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () dentro de AsyncTask para ProgressDialog
- ¿Cómo mostrar la lista desplegable-ver debajo de la vista particular en android?
- Imagen seleccionada de gallary no va a establecer en ImageView
- ¿Cuál es la diferencia entre .string () y .toString () para OkHttp?
- Acceso a appView desde Cordova 5.0.0
Además del simple tipo de error (debe ser menu_switch
para que coincida con su XML), por el entrenamiento de vista de acción , usted tiene que usar MenuItemCompat.getActionView () para extraer el ActionView
(y, en su caso, convertirlo a SwitchCompat
ya que hay No android.support.v7.widget.Switch
).
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_main, menu); MenuItem item = menu.findItem(R.id.menu_switch); switchButton = (SwitchCompat) MenuItemCompat.getActionView(item); return super.onCreateOptionsMenu(menu); }
Reemplazar
MenuItem item = menu.findItem(R.id.myswitch);
con
MenuItem item = menu.findItem(R.id.menu_switch);
Debido a que la identificación de su elemento en el menú xml es menu_switch, no myswitch.
¿Cómo sobre el uso de MenuItemCompat con la función estática:
MenuItemCompat.getActionView (MenuItem item)