2016-03-27 10 views
1

スナックバーに問題があります。スナックバーはsnackbar.dismiss()に対して反応しません

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

私がチェックし、をisConnectedがtrueを返す場合私のアプリが他の状態にある:

私のコードを解任するために私のスナックバーでは反応しません。 ありがとうございます。

答えて

2

以前に作成したスナップバーの参照がないため、表示されていないスナックバーを閉じようとします。 SnackBar宣言をクラスのフィールドとして移動すると、それが動作するはずです。

+0

実際にOP *はクラスフィールドにして一度だけ初期化する必要があります。今はローカルフィールドです – Droidman

関連する問題