2016-05-14 7 views
7

スナップバーを使用して、自分のアプリをインターネットに接続していないことをユーザーに通知します。 スナップバーに「再試行」アクションを追加して接続を再確認しました。 スナックバーを表示したままにしておくと、インターネット接続が見つかったときに自分自身を却下することができますが、これを動作させることはできません。アクションをクリックするたびに、スナックバーが終了します。アクション後にスナックバーを開いたままにする方法

私は期間を無期限に設定しており、スナックバーは無期限に開いたままですが、アクションをクリックすると消滅します。

私は、アクションをクリックした後に自動的にスナックバーを閉じることが常にデフォルトの動作ではないことをオンラインで読んだことがあります。

編集:

私の質問はひどく言うこともありますように私は感じます。 私はアクションを持つスナックバーを持っていますが、アクションが実行されたときにスナックバーが閉じるのを望んでいません。それは自動的にatmを実行します。

+2

をボタンを見つけ、あなたのリスナーを設定します? IMHO新しいスナックバーを「はい、再試行しましたが、まだインターネットに接続していません」というビジュアルフィードバックとして表示する前に、1秒間待つとよいかもしれません。 (それはあなたが望むことをする方法がないと言っているわけではありません) – tjollans

+0

あなたは手動でスニークバーを表示する必要がありますか?右? –

+0

ユーザーは、スワイプで問題を解決できますが、問題はありません。あなたがアクションをクリックしたときに自動的に閉じないようにしたいだけです。 – DeryckeS

答えて

1

ボタンのOnClickListenerセットをオーバーライドすることができます。 まず、ユーザが「再試行」をタップしたときに、なぜちょうど新しいスナックバーを作成しないとスナックバーを作り、いくつかのダミーリスナー

Snackbar snackbar = Snackbar.make(view,"TXT",Snackbar.LENGTH_LONG).setAction("OK", new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { } 
    }); 

でアクションを設定し、

snackbar.show(); 
ViewGroup group = (ViewGroup) snackbar.getView(); 
for(int i=0; i< group.getChildCount();i++){ 
     View v = group.getChildAt(i); 
     if(v instanceof Button){ 
      v.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        YOUR_ACTION(); 
       } 
      }); 
     } 
} 
+0

これに追加するには、ViewGroupを反復する代わりに 'findViewById'を使うだけです。 'Button actionButton =(Button)snackbar.getView()。findViewById(android.support.design.R.id.snackbar_action); ' – RocketSpock

関連する問題