Ho una barra di azione con un'icona di ricerca. Quando si fa clic sull'icona di ricerca, si espande in una barra di ricerca in cui l'utente può digitare una ricerca.La ricerca nella barra delle azioni non si chiude dopo la ricerca
Il problema si verifica quando l'utente inserisce la ricerca. Vorrei che la barra di ricerca tornasse a un'icona, ma non riesco a farla accadere per tutta la vita.
mio menù ActionBar si presenta così:
<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=".MainActivity" >
<item android:id="@+id/menu_search2"
android:actionViewClass="android.widget.SearchView"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always|collapseActionView|"
android:onClick="goToSearch"
/>
<item android:id="@+id/action_scan"
android:icon="@drawable/barcode"
android:onClick="scanBarcode"
android:showAsAction="ifRoom|collapseActionView"
/>
</menu>
La mia attività di ricerca si presenta così:
public class Search extends Fragment implements SearchView.OnQueryTextListener, ReadJSONResult.OnArticleSelectedListener {
private ListView lv;
View v;
SearchView searchView;
private SearchView mSearchView;
private MenuItem mSearchMenuItem;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//set layout here
v = inflater.inflate(R.layout.activity_search, container, false);
setHasOptionsMenu(true);
getActivity().setTitle("Search");
//get user information
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
String userName = prefs.getString("userName", null);
String userID = prefs.getString("userID", null);
return v;
}
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
// Inflate the menu; this adds items to the action bar if it is present.
searchView = (SearchView) menu.findItem(R.id.menu_search2).getActionView();
searchView.setOnQueryTextListener(this);
searchView.setIconified(false);
}
public boolean onQueryTextSubmit (String query) {
//toast query
//make json variables to fill
searchView.setIconified(true);
searchView.clearFocus();
// url to make request
String url = "myURL";
try {
query = URLEncoder.encode(query, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String jsonUrl = url + query;
//todo: get json
ReadJSONResult task = new ReadJSONResult(getActivity());
task.setOnArticleSelectedListener(this);
task.execute(jsonUrl);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onArticleSelected(String b, String brewery){
searchView.setIconified(true);
searchView.clearFocus();
searchView.postInvalidate();
//code to execute on click
Fragment Fragment_one;
FragmentManager man= getFragmentManager();
FragmentTransaction tran = man.beginTransaction();
//adds beer data to shared prefs for beer tabs
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("beerID",b);
editor.putString("breweryID",brewery);
editor.commit();
Fragment_one = new BeerTabs();
tran.replace(R.id.main, Fragment_one);//tran.
tran.addToBackStack(null);
tran.commit();
}
}
Così che quasi ha funzionato perfettamente, è crollato come dovrebbe, ma non ha ancora eseguito la mia ricerca ... Il mio codice simile a questo ora: https://gist.github.com/anonymous/cf26b36c5a22b64459b6 – Mike
è perché avere il listener della query due volte. Assicurati di aver eliminato l'implementatore OnQueryListener e copia/incolla tutti i tuoi file (richiesta json, ecc.) ** all'interno dello stesso listener di query ** in cui stai comprimendo la vista. All'interno del codice sopra il quale fornisci un listener di query. Vedi @ Mike? – Fllo
Vedere la mia risposta aggiornata sopra. Chiama la tua richiesta all'interno dell'ascoltatore nella riga commentata * "chiama la tua richiesta qui" *.HTH @Mike – Fllo