2014-07-15 16 views
5

Mam program, który ma widok wyszukiwania w pasku akcji i mam problem, gdy szukam jego filtru idealnie, ale kiedy jestem naciśnięty przycisk Wstecz nadal pokazuje dane filtra tak moje pytanie brzmi, co jest zdarzeniem przycisku wstecz w widoku paska czynności Action.?Jak obsługiwać przycisk Wstecz w widoku wyszukiwania w Androidzie

enter image description here

My Kodeks wyszukiwanie Lista jest metoda

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH)); 
    searchView.setQueryHint(this.getString(R.string.search)); 
    editSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
    editSearch.setHintTextColor(getResources().getColor(R.color.white)); 
    searchView.setOnQueryTextListener(OnQuerySearchView); 


private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() { 

    @Override 
    public boolean onQueryTextSubmit(String newText) { 
     if (TextUtils.isEmpty(newText)) { 
      listAllContact.clearTextFilter(); 
     } else { 
      listAllContact.setFilterText(newText.toString()); 
     } 
     return true; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     String text = editSearch.getText().toString() 
       .toLowerCase(Locale.getDefault()); 
     adapter.filter(text); 
     return true; 
    } 

}; 

Filter Adapter

public void filter(String charText) { 
    charText = charText.toLowerCase(Locale.getDefault()); 
    propertyList.clear(); 

    if (charText.length() == 0) { 
     propertyList.addAll(arrayList); 
    notifyDataSetChanged(); 

    } else { 
     for (ContactProperty p : arrayList) { 
      if (p.getFriendName().toLowerCase(Locale.getDefault()) 
        .contains(charText)) { 
       propertyList.add(p); 
      } 
     } 
     notifyDataSetChanged(); 

    } 

Odpowiedz

8

Możesz dodać słuchacza do tego jak:

MenuItem searchMenuItem = menu.findItem(R.id.menu_search); 
    searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      // Do whatever you need 
      return true; // KEEP IT TO TRUE OR IT DOESN'T OPEN !! 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      // Do whatever you need 
      return true; // OR FALSE IF YOU DIDN'T WANT IT TO CLOSE! 
     } 
    }); 
1

I n plik manifestu

Do obsługi przycisku Wstecz na pasku akcji - Część deklaracji aktywności przede wszystkim należy zdefiniować Czynność rodzica.

jak-

 android:name="com.android.unum.ui.SelfServiceActivity" 
     android:label="@string/self_service" 
     android:parentActivityName="com.android.unum.ui.DashboardActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.android.unum.ui.DashboardActivity" /> 

Edycja onOptionsItemSelected Sposób ów wewnątrz aktywności

NavUtils.navigateUpFromSameTask (tym);

// public static void navigateUpFromSameTask (Activity sourceActivity) // sourceActivity zostanie zakończone przez to połączenie.

Uwaga: tej metody należy używać tylko wtedy, gdy atrybut sourceActivity i odpowiedni obiekt nadrzędny należą do tego samego zadania.

o więcej informacji: -

http://developer.android.com/reference/android/support/v4/app/NavUtils.html

Jak

@Override

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
4

Wystarczy tylko umieścić atrybut "collapseActionView" w układzie menu

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/menu_item_search" 
     android:title="@string/search" 
     android:iconifiedByDefault="true" 
     android:icon="@drawable/ic_action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="ifRoom|collapseActionView"/> <--this one 
</menu> 

Zapewni to funkcjonalność, której sam szukasz.

3

Spróbuj tego:

MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      // Do something when collapsed 
      return true; // Return true to collapse action view 
     } 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      return true; 
     } 
    }); 
0

ten załamie element działania wyszukiwarki, gdy jej celem jest stracone:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    searchItem = menu.findItem(R.id.action_search); 
    searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

    // be sure to use 'setOnQueryTextFocusChangeListener()' 
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() 
    { 
     @Override 
     public void onFocusChange(View v, boolean newViewFocus) 
     { 
      if (!newViewFocus) 
      { 
       //Collapse the action item. 
       searchItem.collapseActionView(); 
       //Clear the filter/search query. 
       myFilterFunction(""); 
      } 
     } 
    }); 

    return super.onCreateOptionsMenu(menu); 
} 

Jest to jedyny sposób znalazłem się powodzeniem zwinąć akcję szukanej zobacz, gdy naciśniesz przycisk Wstecz.

Powiązane problemy