2016-05-14 186 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

相關問題