2011-08-04 24 views
13

Uygulamamda, içinde özel bir SearchView bulunan Action Bar kullanıyorum. Kullanıcı arama alanına enter düğmesine bastığında bazı özel kodları kullanmak istiyorum. Ancak, kullanıcının SearchView'da enter düğmesine bastığı anı yakalamanın bir yolunu bulamıyorum.Android Özel Arama Görünümü Ara Ara

Şimdi, arama eylemini yakalamak için birkaç yöntem denedim ancak bulamıyorum.

Benim düğmesi böyle tanımlanır:

  1. : Burada I`ve 2 yaklaşımlar çalıştığını görebilirsiniz

    public class CustomSearchView extends SearchView implements OnClickListener, android.view.View.OnKeyListener{ 
    
        public CustomSearchView(Context context) { 
         super(context); 
         this.setOnSearchClickListener(this); 
         this.setSubmitButtonEnabled(true); 
          this.setOnClickListener(this); 
         this.setOnKeyListener(this); 
        } 
    
        @Override 
        public void onClick(View v) { 
    
         Log.d("SEARCH", "Onclick! " + this.getQuery()); 
        } 
    
        @Override 
        public boolean onKey(View v, int keyCode, KeyEvent event) { 
         // TODO Auto-generated method stub 
    
         Log.d("SEARCH", "Search onkey"); 
         return false; 
        } 
    
    } 
    

    : Bununla

    <item 
        android:id="@+id/action_bar_search" 
        android:title="Search" 
        android:icon="@drawable/ic_menu_search" 
        android:showAsAction="always" 
        android:actionViewClass="-package-.CustomSearchView" 
        /> 
    

    CustomSearchView sınıfını aittir Gönderim düğmesinden onclick olayını yakalayın. Bu sadece Arama Görünümü'nü açmak için arama simgesine tıkladığımda tetiklendiğinden çalışmadı.

  2. SearchView içindeki tuş vuruşlarını yakalayın. Bu da çalışmadı. Orada bastığım herhangi bir anahtardan cevap almadım.

Bu SearchView ile özel Arama eylemi gerçekleştirmenin bir yolu var mı?

GÜNCELLEME: Bu davranışı geçersiz kılmaya yönelik özel bir iletişim kutusu ihtiyacım yok: PJL'nin aşağıda belirtildiği gibi

. Normal Arama Görünümü widget'i bunun için iyi çalışır.

cevap

46

arama görünüm elde edin ve aşağıdaki gibi benim menü düzenidir arada bir OnQueryTextListener

final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextChange(String newText) { 
     // Do something 
     return true; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
     // Do something 
     return true; 
    } 
}; 

searchView.setOnQueryTextListener(queryTextListener); 

ekleyin;

<item android:id="@+id/menu_search" 
    android:showAsAction="ifRoom" 
    android:actionViewClass="android.widget.SearchView" /> 
+0

Bir çekicilik gibi çalışır! Yardım için teşekkürler! – Bart

+1

Mükemmel ipucu, – Bostone

+1

Kıskançlığı kurtardığın için teşekkürler Müthiş, Bir Etkinlik başlatmadan bir Fragment içerisinde arama yapmak için bunu kullanacağım. En iyi sonuçları umuyorum: D – span