ver studio resultados puedo programacion porque nada muestra historial google funciona desde cuando como celular busco buscar buscador aparece algo actividad java android android-intent android-actionbar

java - studio - porque no puedo buscar en google desde mi celular



Tengo problemas para que la interfaz de búsqueda de Android funcione en la barra de acción (4)

Intenté seguir la guía aquí , pero estoy teniendo algunos problemas. Obtuve correctamente el icono de búsqueda para que aparezca en la barra de acciones, pero estoy teniendo problemas para adjuntar la searchable configuration a SearchView.

Mi archivo res / menu / options_menu.xml:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/search" android:title="@string/search_title" android:icon="@drawable/search" android:showAsAction="collapseActionView|ifRoom" android:actionViewClass="android.widget.SearchView" /> </menu>

Mi archivo res / xml / searchable.xml (Nota: tuve que crear una carpeta "xml" en la carpeta res porque no existía. No obstante, creo que esto no debería hacer la diferencia?

<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:hint="@string/search_hint" />

Mi archivo res / values ​​/ strings.xml:

<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Starting To Feel It</string> <string name="single_post">Single Post View</string> <string name="search">Search Activity</string> <string name="action_settings">Settings</string> <string name = "pagination_last">Last</string> <string name = "pagination_next">Next</string> <string name = "player_play">Play</string> <string name = "player_previous">Previous</string> <string name = "player_next">Next</string> <string name = "player_playlist">Playlist</string> <string name = "player_progress_bar">Progress Bar</string> <string name="drawer_open">Open navigation drawer</string> <string name="drawer_close">Close navigation drawer</string> <string name="search_title">Search STFI</string> <string name="search_hint">Search STFI</string> <string name="menu_item_picture">Menu Item Picture</string> </resources>

Mi archivo AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stfi" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:largeHeap="true" android:theme="@android:style/Theme.Holo.Light" > <activity android:name=".StartingToFeelIt" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".activities.SinglePost" android:label="@string/single_post"> </activity> <activity android:name=".activities.SearchActivity" android:label="@string/search"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> </application> </manifest>

Todas mis actividades extienden una clase que llamé MenuActivity , y aquí está la función onCreateOptionsMenu define en MenuActivity.java:

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); // Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); System.out.println("The component name is " + this.getComponentName().toString()); SearchableInfo info = searchManager.getSearchableInfo(getComponentName()); if(info == null) { System.out.println("It is null!"); } searchView.setSearchableInfo(info); return true; }

Siempre obtengo esa información que es nula en esta función. No estoy seguro de lo que estoy haciendo mal para obtener información es nulo, y no estoy seguro de cómo solucionarlo. No estoy seguro si lo necesita o no, pero debajo está mi clase de SearchActivity. En este momento, no hace más que tratar de mostrar la búsqueda (sin embargo, nunca se llama porque la configuración de búsqueda no está configurada correctamente). El archivo se guarda en com.stfi.activities.SearchActivity.java.

Otra nota: cuando The component name is ComponentInfo(com.stfi/com.stfi.StartingToFeelIt) el nombre del componente en la función anterior, The component name is ComponentInfo(com.stfi/com.stfi.StartingToFeelIt) y no solo com.stfi.StartingToFeelIt. Esto me lleva a creer que algo está mal con mi archivo AndroidManifest, pero no tengo idea si esta es la causa de por qué no puedo adjuntar la configuración de búsqueda.

public class SearchActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { handleIntent(getIntent()); } @Override protected void onNewIntent(Intent intent) { handleIntent(intent); } private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); System.out.println("You are searchin " + query); } } }


<activity android:name="com.yourapp.YourSearchActivity" android:label="@string/title_activity_search" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity>

En mi menú XML para la actividad:

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.mirrorcamera.MainActivity" > <item android:id="@+id/search" android:showAsAction="always" android:title="@string/string_title"/> </menu>

Código de Java:

public class SearchActivity extends ListActivity { private static final int ICON = R.drawable.ic_ab_back_holo_light; private SearchDataBaseAdapter searchDataBaseAdapter; private ArrayList<SearchResultModel> searchResultList; private ResultListAdapter resultListAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); super.onCreate(savedInstanceState); searchResultList = new ArrayList<SearchResultModel>(); // gets the db reference from adapter searchDataBaseAdapter = new SearchDataBaseAdapter(this); searchDataBaseAdapter.open(); handleIntent(getIntent()); } /** * Handles the intent from the search. * * @param intent */ private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { // handles a search query String query = intent.getStringExtra(SearchManager.QUERY); search(query); } } @Override public void onNewIntent(Intent intent) { // super.onNewIntent(intent); setIntent(intent); handleIntent(intent); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.search: onSearchRequested(); break; } return true; } /** * Search function. * * @param searchTerm */ public void search(String searchTerm) { try { Cursor cursor = searchDataBaseAdapter.getWordMatches(searchTerm, null); //create and add your list to your adapter. resultListAdapter = new ResultListAdapter(this, itemsFound(cursor, cursor.getString(cursor.getColumnIndex("YOUR_COLUMN")))); } catch (NullPointerException ex) { Toast.makeText(this, "Search Term not found", Toast.LENGTH_LONG).show(); ex.getStackTrace(); } setListAdapter(resultListAdapter); } /** * Returns the items found and writes the items found to an arraylist. * @return */ private ArrayList<SearchResultModel> itemsFound(Cursor cursor, String itemName, String itemDescription, int type) { // ArrayList<String> list = new ArrayList<String>(); if (cursor.moveToFirst()) { do { searchResultList.add(new SearchResultModel(itemName, itemDescription, type, ICON)); } while (cursor.moveToNext()); } cursor.close(); return searchResultList; } }

Espero que esto ayude


He estado husmeando y he encontrado dos cosas que debes hacer.

1. Actualice su Manifest.xml y use <meta para agregar su interfaz de búsqueda.

2. Para que tenga una configuración de búsqueda, debe agregar metadatos

<activity ... > ... <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity>


probablemente problema con el manifiesto, supongo,

<meta-data android:name="android.app.default_searchable" android:value=".SearchActivity" />

falta en la etiqueta de actividad de manifiesto para ''StartingToFeelIt''

<activity android:name=".StartingToFeelIt" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.default_searchable" android:value=".SearchActivity" /> </activity>

también puede usar ABS CollapsibleSearchMenu Lib.


"Mi archivo res / xml / searchable.xml (Nota: tuve que crear una carpeta" xml "en la carpeta res porque no existía. Sin embargo, creo que esto no debería hacer la diferencia".

Puede agregar carpetas cuando lo necesite, siempre y cuando siga las pautas de los espacios de nombres de xmls

Con respecto a la búsqueda, no creo que el minSdkVersion y targetSdkVersion tengan razón.

De acuerdo con el artículo compatible con Android que queda atrás , deberías estar usando

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application> ...