2016-04-19 6 views
1

Ich habe eine funktionierende SearchView (auf der Symbolleiste) auf meinem Projekt. Ich habe eine boolesche Methode zur Überprüfung der Netzwerkverbindung.Android SearchView OnClickListener

Was versucht I`m zu tun:

Wenn myApp offline ist, wenn der Benutzer klicken Sie auf Suchsymbol, erlauben keine Suche Expansion und einen Dialog öffnen ...

Ist es möglich, ohne SearchView-Klasse zu erweitern?

Danke.

+0

Es scheint, dass diese [Frage] (http://stackoverflow.com/questions/20482849/how-to-disable-searchview) für Sie nützlich sein können. Setzen Sie einen onClickListener in Ihrer Suchansicht und dann in der Click-Methode Aufruf clearFocus() – harveytoro

+0

Hallo @ HB3.14, danke für die Antwort. Ich habe versucht, ClearFocus() in OnClick (View v) aufzurufen, aber die Texteingabe von SearchView wird geöffnet. Ich muss verhindern, dass das Texteingabefeld geöffnet wird. –

+0

Wenn die boolesche Methode innerhalb der onCreate-Methode aufgerufen wird, können Sie die searchView beim Erstellen der Aktivität deaktivieren, indem Sie view.setInputType (InputType.TYPE_NULL) aufrufen. Siehe [question] (http://stackoverflow.com/questions/11436018/disabling) -searchview) – harveytoro

Antwort

0

machen so etwas wie das:

public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()){ 
     case android.R.id.yoursearchviewid: 
      if(!isNetworkAvailable(yourcontext)){ 
      item.setActionView(null); 
      Snackbar.make(yourview,"No internet contection.",Snackbar.LENGTH_LONG).setAction("Turn on", new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         defenicoes = new Intent(Settings.ACTION_WIFI_SETTINGS); 
         startActivity(defenicoes); 
        } 
       }).show();; 
      } 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public boolean isNetworkAvailable(final Context context) { 
    final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); 
    return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected(); 
}