0

私はFirebaseからいくつかのデータをダウンロードし、私のアプリでそれを示すアンドロイドアプリを開発しています。進行状況表示バーが表示され、非表示になったときに表示されない場合にのみ、スナックバーを表示する方法。詳細を参照してください

ProgressBarはアクティビティの起動時に表示され、データが完全に読み込まれると非表示になります。

私はHandlerを設定しています。プログレスバーが表示されている場合は5秒後にSnackbarが表示されます。問題は、5秒前にプログレスバーが見えなくなってもスナックバーが表示されていることです。ここで

は、私がやっていることだ:progressBarLoadingRequests.getVisibility() == View.VISIBLE条件はプログレスバーを表示するか非表示にするかどうかを確認することが適当である:

Handler slowInternetConnection = new Handler(); 
      slowInternetConnection.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        if (progressBarLoadingRequests.getVisibility() == View.VISIBLE) { 
         snackbar = Snackbar 
           .make(coordinatorLayout, "It seems there is some problem with the network. Please wait...", Snackbar.LENGTH_LONG); 
         snackbar.setDuration(Snackbar.LENGTH_INDEFINITE); 
         snackbar.show(); 
        } else { 
         Toast.makeText(getBaseContext(), "not showed", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }, 5000); 

私はこの上でチェックするかどうかということを知っているしたいと思いますか?

または、私が望むものを達成するために他に何ができるか。

お知らせください。

答えて

0

その比較は有効である必要があります。私はプログレスバーを持っているサンプルでそれをテストし、そのステートメントが機能します。

ProgressDialog(組み込み関数isShowing())を使用してテストすることもできます。 ProgressBarをレイアウトに含める必要はないので、ProgressBarを使用するより簡単ですが、ダイアログが閉じられるまでレイアウトを固定します。

+0

比較が有効な場合、プログレスバーが見えなくなってもスナックバーが表示されるのはなぜですか? –

+0

あなたのコードは私のアプリケーションの内部で使用すると動作します。問題はここでコードの外にあるものでなければなりません。あなたの 'progressBarLoadingRequests'はパブリック変数だと思います。おそらく、どこかにリセットされ、実際のプログレスバーへの参照を保持していない – user3331142

関連する問題