2016-03-27 2 views
1

Ich habe ein Problem mit snackbar. Meine snackbar reagiert nicht fürSnackbar reagiert nicht auf snackbar.dismiss()

Meinen Code entlassen:

ConnectivityReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      ConnectivityManager cm = 
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 

      Snackbar snackbar = Snackbar 
        .make(drawer, getResources().getString(R.string.no_internet), Snackbar.LENGTH_INDEFINITE) 
        .setAction(getResources().getString(R.string.settings), new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0); 
         } 
        }); 

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      boolean isConnected = activeNetwork != null && 
        activeNetwork.isConnectedOrConnecting(); 

      if(!isConnected){ 
       snackbar.show(); 
      }else { 
       snackbar.dismiss(); 
      } 
     } 
    }; 

Ich habe und meine app ist in anderem Zustand, wenn isConnected true zurück. Danke für Hilfe.

Antwort

2

Sie versuchen, eine Snackbar, die nicht angezeigt wird, zu schließen, da Sie keinen Verweis auf die zuvor erstellte Snackbar haben. Verschieben Sie die SnackBar-Deklaration als ein Feld Ihrer Klasse und es sollte funktionieren.

+0

eigentlich muss das OP * es zu einem Klassenfeld machen und es nur einmal initialisieren. Gerade jetzt ist das ein lokales Feld – Droidman