2012-05-02 45 views
11

Tôi đang sử dụng tiện ích SearchView để bật tìm kiếm trong ứng dụng của mình. Sau lần nhấp đầu tiên trên biểu tượng tìm kiếm, tiện ích SearchView mở rộng vào trường tìm kiếm và mũi tên "quay lại" được hiển thị bên cạnh biểu tượng ứng dụng. Nếu tôi nhấp vào biểu tượng ứng dụng, thanh hành động sẽ chuyển về trạng thái ban đầu (không có mũi tên "quay lại") và SearchView sẽ trở lại biểu tượng.Đặt lại thanh tác vụ sau khi sử dụng SearchView

Bây giờ vấn đề: sau khi tìm kiếm được thực thi, thanh hành động không thay đổi, cách duy nhất để hoàn nguyên là nhấp vào biểu tượng ứng dụng hoặc mũi tên "quay lại" của điện thoại. Không tốt vì tôi muốn thanh tác vụ chuyển sang trạng thái ban đầu khi tìm kiếm xong. Tôi đã thử SearchView.setIconofied(true) nhưng có 2 vấn đề:

  1. Biểu tượng tìm kiếm xuất hiện tại cùng vị trí với trường chỉnh sửa (ban đầu nó ở phía ngoài cùng bên phải).
  2. Thanh tác vụ vẫn hiển thị mũi tên "quay lại".

Tôi nghĩ rằng vấn đề tôi đang đối mặt với kết quả từ sai lệch so với mẫu điều hướng thông thường. Trong trường hợp của tôi tất cả mọi thứ đang xảy ra bên trong cùng một hoạt động (kết quả tìm kiếm được hiển thị trong cùng một hoạt động lưu trữ thanh hành động), do đó, ví dụ thực hiện Activity.finish() đơn giản chỉ cần thoát ứng dụng.

Làm cách nào để kích hoạt "quay lại một bước" của thanh tác vụ? Hoặc mô phỏng nhấp vào biểu tượng ứng dụng?

Trả lời

35

Có vẻ như bạn đã thiết lập chế độ xem này dưới dạng chế độ xem hành động có thể thu gọn trên MenuItem. Bạn có thể gọi collapseActionView() trên trường hợp MenuItem đó để gửi lại trạng thái đã đóng của nó.

+0

Tôi ước gì có thể upvote này nhiều lần. – dm78

1

phương pháp collapseActionView() chỉ hoạt động từ cấp API 14. Nếu bạn đang tìm kiếm để hỗ trợ cho các phiên bản trước của Android, sau đó bạn nên sử dụng MenuItemCompat thư viện.

Đây là giải pháp của tôi để đóng SearchView và thiết lập lại các thanh hành động ...

private MenuItem searchMenuItem; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    searchMenuItem = menu.findItem(R.id.action_search); 
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 

    customizeSearchView(searchView); 

    return super.onCreateOptionsMenu(menu); 
} 




    @Override 
protected void onNewIntent(Intent intent) 
{ 
    setIntent(intent); 

    if (searchMenuItem != null) 
    { 
     if (MenuItemCompat.expandActionView(searchMenuItem)) 
     { 
      MenuItemCompat.collapseActionView(searchMenuItem); 
     } 
     else if (MenuItemCompat.collapseActionView(searchMenuItem)) 
     { 
      MenuItemCompat.expandActionView(searchMenuItem); 
     } 
    } 

    handleIntent(intent); 
} 
Các vấn đề liên quan