2016-05-14 76 views
7

我使用快餐栏通知我的应用程序用户他们没有连接到互联网。 我向小吃店添加了“重试”操作,重新检查连接。 我希望快餐栏保持显示状态,直到我自己解除它(当找到互联网连接时),但我无法使其正常工作。每当我点击该动作时,小吃店都会解散。如何在操作后保持快餐栏打开状态为

我将持续时间设置为无限期,快餐栏会无限期地保持打开状态,但是当我点击该操作时它会被取消。

我在线阅读,点击动作后自动解散快餐栏并不总是默认行为。

编辑:

我觉得我的问题可能会受到严重的措辞。 我有一个小吃店,但我不希望小吃店在执行操作时关闭,它会自动执行atm操作。

+2

为什么不创建一个新的小吃吧,当用户点击“重试” ?恕我直言,它甚至可以等待一秒钟,然后再显示新快餐栏作为视觉反馈,告诉用户“是的,我重试了,但仍然没有互联网连接”。 (这并不是说没有办法做你想做的事) – 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'。即按钮actionButton =(按钮)snackbar.getView()。findViewById(android.support.design.R.id.snackbar_action);' – RocketSpock

相关问题