onClick () confusión de eventos con el parámetro
Tengo una vista que tiene una propiedad onClick
:
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="hey" android:onClick="showCity" />
Lo que corresponde a este método:
- Lanzamiento de Media Player con intención
- Android: url abierta en el navegador externo causa un bucle infinito
- ¿Está bien cancelar el registro de 'BroadcastReceiver' dinámico del propio método onReceive () del receptor?
- Android: ¿puede obtener código nativo la intención de difusión del sistema android?
- Comprobar si la aplicación está instalada - Android
public void showCity(View view) { Intent intent = new Intent(this, CityActivity.class); startActivity(intent); }
Sin embargo, tengo un elemento de menú que quiero tener abierto el CityActivity
también:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_city: showCity(); return true; default: return super.onOptionsItemSelected(item); } }
Sin embargo, esto no funciona porque falta el parámetro de view
en la llamada a showCity()
y no estoy seguro de lo que debería ser en este caso.
¿Cómo puedo modificarlo para que funcione en ambos casos?
- Manera sana de ir de ArrayList <Long> a través de una intención
- ¿Cómo usar putExtra () con FLAG_ACTIVITY_REORDER_TO_FRONT en las aplicaciones de Android?
- Haz que el botón "arriba" se comporte como el botón "volver" de Android
- Propuesta de participación exitosa para android
- Android: ¿puedo pasar un parámetro al iniciar otras aplicaciones de mi aplicación?
- ¿Cómo obtengo la URL y el texto de selección desde el navegador de Android con la intención de compartir
- Cómo mostrar la actividad transparente en la otra actividad sin eliminar la actividad anterior
- NullPointerException al usar LocalBroadcastManager
Reemplace su código onOptionsItemSelected
con el siguiente código siguiente:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_city: showCity(null); return true; default: return super.onOptionsItemSelected(item); } }
showCity
debe tener el parámetro View
lugar de que puede pasar null
como parámetro a su método onClick()
.
Puesto que usted no utiliza el parámetro de la view
, usted puede apenas pasar null
a él y él trabajará
Simplemente pasar null
es decir showCity(null)
Escriba un atributo id en su textview en xml como se muestra a continuación, también puede eliminar el atributo onClick de TextView:
<TextView android:id="@+id/tShowCity" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="hey" />
Ahora en su método onCreate () de la actividad inicie su TextView como se muestra a continuación y escriba el oyente de clic para el TextView como se muestra a continuación:
TextView tv = (TextView)findViewById(R.id.tShowCity); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showCity(); } });
ahora defina su método de city show como se muestra a continuación:
public void showCity() { Intent intent = new Intent(this, CityActivity.class); startActivity(intent); }
Ahora el método anterior también se puede utilizar en su menú y funcionará sin ningún problema como:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_city: showCity(); return true; default: return super.onOptionsItemSelected(item); } }
Si no está usando la vista, ¿por qué agrega el parámetro de método …
public void showCity (Ver vista) {Intención intención = nueva Intención (esto, CityActivity.class); StartActivity (intención); }
Mira…
public void showCity() { Intent intent = new Intent(this, CityActivity.class); startActivity(intent); }
Sencillo….. 🙂
Si no desea utilizar la propiedad View
..a respuesta ya puede pasar valor null
a su showCity ()
showCity(null);
Pero si desea utilizar propiedades de vista específicas en su showCity()
puede pasar vista a con id por findViewById()
método .. como.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: showCity(this.findViewById(R.id.textview1)); return true; default: return super.onOptionsItemSelected(item); } }
- Error: Error de ejecución del error ': app: dexDebug' de la tarea en mi proyecto mientras agregué nueva dependencia
- GoogleApiClient no está configurado para utilizar la API necesaria para esta llamada