2017-01-16 25 views
-2
snackbar = Snackbar.make(getWindow().getDecorView().getRootView(),"Please check your internet connection", Snackbar.LENGTH_INDEFINITE) 
      .setAction("RETRY", new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        snackbar.show(); 
       } 
      }); 

工作OnClick的重試行動我想再次表現出同樣的Snackbar.But它不工作!snackbar.show()不是在的setAction

+0

你覺得如何將工作/ – droidev

+0

如何再次表現出同樣的小吃吧重試的onClick? –

+0

你第一次如何顯示? – droidev

回答

2

您必須在onClick之外寫下snackbar.show();,如下所示。

Snackbar snackbar = Snackbar 
    .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG) 
    .setAction("RETRY", new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     } 
    }); 


View sbView = snackbar.getView(); 
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
textView.setTextColor(Color.YELLOW); 
snackbar.show(); 
1
final Snackbar snackbar = Snackbar.make(getWindow().getDecorView().getRootView(),"Please check your internet connection", Snackbar.LENGTH_INDEFINITE); 
     snackbar.setAction("RETRY", new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
      ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo connection = manager.getActiveNetworkInfo(); 
      if (connection != null && connection.isConnectedOrConnecting()){ 
       snackbar.dismiss(); 
      } 
      else{ 
       snackbar.show(); 
      } 
      } 
      }); 
      snackbar.show(); //add here to show snackbar 
+0

即時通訊做網絡檢查onClick函數,如果沒有網絡我想再次顯示相同的快餐欄 –

+0

@VenkateswaranBalasubramanian,在'重試'你必須添加一些函數來檢查連接,將檢查連接if沒有連接使用相同的代碼在該功能檢查網絡顯示快餐欄。 – W4R10CK

-1
public static boolean isNetworkAvailable(final Context context) { 
     final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); 
     return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected(); 
    } 

void ShowSnackBar(){ 


     Snackbar snackbar = Snackbar 
       .make(coordinatorLayout,"Check internet connection", Snackbar.LENGTH_LONG) 
       .setAction("Retry", new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         // Write Retry Code like making api call here 

        // apiCall(); 



        } 
       }); 

snackbar.show();  
} 

if(!isNetworkAvailable()){ 
ShowSnackBar(); 
} 
+0

請在發佈內容前閱讀該問題。 – droidev

+1

可能是他需要這一個。你可以發佈你的,如果你認爲你更好地理解它可能是他想重新顯示小吃吧我知道@droidev –

+0

是的,他想要再次顯示小吃店,但它在哪裏寫在你的代碼? – droidev

0

據我所知,你不能重新顯示的小吃店與在小吃吧的行動。下面是使用按鈕彈出快餐欄的示例。希望能幫助到你。

MainActivity.java

activity_main.xml

Gradle.app

0

有報道這樣的錯誤。請看看here。所以直到錯誤修復發佈之前,您必須展示另一個快餐欄。所以總共你必須有兩個snacbars。示例如下

private void showFirstSnackbar(View view) 

     final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE); 
     snackbar.setAction("RETRY", new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         snackbar.dismiss(); 
         showAnotherSnackBar(view); 
        } 
       }); 
} 


private void showAnotherSnackBar(View view){ 
    final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE); 
     snackbar.setAction("RETRY", new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         snackbar.dismiss(); 
         showFirstSnackbar(view); 
        } 
       }); 
} 

給出試試這個,讓我知道,如果還有問題

+0

我在一個單獨的功能中只使用了一個Snackbar。從任何地方調用該功能。現在它工作正常。 –

+0

哦,太棒了。任何如何報告錯誤。 – droidev

0
void ShowSnackBar(){ 
     Snackbar snackbar = Snackbar 
       .make(coordinatorLayout,"Check internet connection", Snackbar.LENGTH_LONG) 
       .setAction("Retry", new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 

         if(isNetworkAvailable){ 
          ///called api 
         }else{ 
          ShowSnackBar(); 
          } 
        } 
       }); 

snackbar.show();  
} 
if(!isNetworkAvailable()){ 
ShowSnackBar(); 
} 
相關問題