2014-07-15 16 views
5

Tôi đã phát triển một ứng dụng có chế độ xem tìm kiếm trong thanh tác vụ và tôi gặp sự cố khi tôi tìm kiếm bộ lọc của nó một cách hoàn hảo. câu hỏi của tôi là sự kiện của nút quay lại của chế độ xem Thanh tác vụ tìm kiếm là gì.Làm cách nào để xử lý nút quay lại của Chế độ xem tìm kiếm trong android

enter image description here

My Mã Kiện Tìm Kiếm Xem là Phương pháp

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; 
    } 

}; 

Lọc trong Adaptor

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(); 

    } 

Trả lời

8

Bạn có thể thêm listener cho điều này như:

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

tôi n tệp kê khai

Để xử lý nút quay lại của Thanh tác vụ - phần khai báo hoạt động trước hết cần xác định Hoạt động gốc.

như-

 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" /> 

Sửa onOptionsItemSelected phương pháp thats bên trong hoạt động

NavUtils.navigateUpFromSameTask (this);

// void tĩnh công khai điều hướngUpFromSameTask (Nguồn hoạt độngActivity) // sourceActivity sẽ kết thúc bằng cuộc gọi này.

Lưu ý: Phương thức này chỉ nên được sử dụng khi sourceActivity và cha mẹ tương ứng nằm trong cùng một tác vụ.

Để biết thêm thông tin: -

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

Giống như

@ 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

Bạn chỉ cần đặt "collapseActionView" thuộc tính trong cách bố trí 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> 

Điều đó sẽ cung cấp cho bạn chức năng mà bạn tự tìm kiếm.

3

Hãy thử điều này:

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

này sẽ thu gọn các mục hành động tìm kiếm khi tập trung của nó bị mất:

@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); 
} 

Đây là cách duy nhất tôi đã tìm thấy sụp đổ thành công hành động mục tìm kiếm xem khi nhấn nút quay lại.

Các vấn đề liên quan