¿Por qué es Intent.getAction () nulo de mi actividad de búsqueda?

He seguido la documentación de SearchManager sin embargo, todavía tengo problemas para realizar una búsqueda de las actividades de mi aplicación. Desde mi actividad, aparece el cuadro de diálogo de búsqueda, introdujo una consulta, pulse la búsqueda, mi actividad se vuelve a abrir, luego veo esto en el registro:

D/SearchDialog( 584): launching Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } I/SearchDialog( 584): Starting (as ourselves) #Intent;action=android.intent.action.SEARCH;launchFlags=0x10000000;component=com.clinkybot.geodroid2/.views.Waypoints;S.user_query=sdaf;S.query=sdaf;end I/ActivityManager( 584): Starting activity: Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } D/WAYPOINTS( 1018): NI Intent { cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } D/WAYPOINTS( 1018): NI null D/WAYPOINTS( 1018): NI false 

Me parece que todo está bien hasta las últimas tres líneas. Las líneas "NI" son getIntent().toString(), getIntent().getAction() y getIntent().hasExtra(SearchManager.QUERY) respectivamente.

ActivityManager parece estar iniciando mi actividad con la acción correcta. Entonces cuando mi actividad comienza, no contiene ninguna acción !? ¿Qué estoy haciendo mal?

La parte relevante de mi manifiesto es:

 <activity android:name=".views.Waypoints" android:label="Waypoints" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> 

Eso me llevó demasiadas horas de mi vida. Al realizar una búsqueda desde la actividad singleTop que se puede buscar (en mi caso Waypoints), debe anular onNewIntent () y tomar la consulta de búsqueda allí. Que después de unas horas, estaba haciendo. La captura fue que getIntent () no devuelve el Intent utilizado para llamar a la actividad (la cabeza estalla). Parece que devolver el intento original que abrió mi actividad de búsqueda antes de realizar mi primera búsqueda .

El método onNewIntent recibe la intención de búsqueda. He reemplazado getIntent () con el param de onNewIntent () y boom, progreso.

Aunque debo admitirlo; Averiguar esto facilita la frustración de ser incapaz de escapar del sonido de Bailar con las Estrellas a todo volumen.

  • Android Cómo ver doc de sdcard en gallary?
  • SearchManager.getSearchableInfo (getComponentName ()) devuelve null
  • Cómo utilizar Algolia en Android con contenido de Firebase
  • Android: Proporcionar autosugestión automática en android coloca Api?
  • Cómo buscar ListView en Android (el estilo de Contacto)
  • Cómo hacer que SeekBar ocupe todo el ancho de los padres
  • Android: implemente la sugerencia de búsqueda de aplicaciones basada en la respuesta del servidor
  • SeekTo en VideoView
  • Agregue un filtro de búsqueda en RecyclerView con tarjetas?
  • Android: no puede encontrar TextView dentro de SearchWidget cuando usa la biblioteca de soporte técnico de Android
  • ¿Cómo puedo añadir una vista de búsqueda a mi aplicación para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.