He seguido la documentación de SearchManager y sigo teniendo problemas para realizar búsquedas en una de las actividades de mi aplicación. Desde mi actividad, aparece el cuadro de diálogo Buscar, entro en una consulta, búsqueda golpeado, mi actividad se vuelve a abrir, entonces veo esto en el registro:¿Por qué la actividad de búsqueda de Intent.getAction() es nula?
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 los últimos tres líneas . Las líneas "NI" son getIntent().toString(), getIntent().getAction()
y getIntent().hasExtra(SearchManager.QUERY)
respectivamente.
ActivityManager parece estar comenzando mi actividad con la acción correcta. ¡Entonces cuando mi actividad comienza, no contiene ninguna acción !? ¿Qué estoy haciendo mal?
La parte pertinente 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>
Estoy contento de haber encontrado esta pregunta antes de que mi cabeza explotara también. Esto se menciona en la guía Fundamentos de la aplicación, pero maldita sea sería bueno tener una mención de onNewIntent en [Intención # FLAG_ACTIVITY_SINGLE_TOP] (http://j.mp/gkTnyw) en lugar de solo en [Intención # FLAG_ACTIVITY_CLEAR_TOP] (http://j.mp/fNlEM3). Además, la documentación de [Activity # getIntent] (http://j.mp/ftcS6p) ni siquiera menciona nada. Ugh ... Dicho esto, gracias. – brack
Así que tal vez sería una buena práctica llamar siempre a NewIntent (getIntent()) desde onCreate, para que sepas que sigue la misma ruta de código. – mclin
su problema se explica aquí http://developer.android.com/guide/topics/search/search-dialog.html#LifeCycle, sin embargo, incluso después de aplicar esto, todavía me sale nulo ... – max4ever