2017-01-16 7 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 из Retry действие, которое я хочу снова показать тот же Snackbar.But он не работает !!snackbar.show() не работает в SetAction

+0

, как вы думаете, он будет работать/ – droidev

+0

Как раз показать ту же закусочную OnClick из Retry ?? –

+0

первый раз, как вы показываете? – droidev

ответ

2

Вы должны написать snackbar.show(); за пределами onClick, как показано ниже.

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, В 'RETRY' вы должны добавить некоторую функцию для проверки соединения, которое будет проверять соединение, если никакое соединение не использует тот же самый код внутри этой функции, проверяющей сеть, чтобы показать закусочную. – 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

Насколько мне известно, вы не можете reshow закусочной с действием в закусочной. Вот пример использования кнопки для всплытия закуски. Надеюсь, поможет.

MainActivity.java

activity_main.xml

Gradle.app

0

Существует ошибка сообщила об этом. пожалуйста, посмотрите на here. поэтому до релиза исправления ошибок вам нужно показать еще одну закусочную. так что в итоге вам придется иметь два снахбара. Ниже приведен пример

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

Я использовал только одну закусочную в отдельной функции. вызов этой функции из любого места. Теперь он работает отлично. –

+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(); 
}