2016-01-31 1 views
-1

Я выставил снэк-бар с Android НЕЗАВИСИМАЯ ДЛИНА, но как закрыть снэк-бар без каких-либо действий или продолжительности при подключении к Интернету. Я должен проверить подключение к Интернету или нет. После того, как интернет-снэк-бар будет закрыт автоматически без каких-либо действий или продолжительности. Если кто-нибудь знает, любезно помогите мне.Есть ли способ закрыть андроид snackbar (LENGTH_INDEFINITE) автоматически при подключении к Интернету без каких-либо действий?

вот мой код

public static void snack (HashMap<String,View.OnClickListener> actions,int priority,String message,Activity context){ 
Snackbar B = Snackbar.make(context.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG); 
if(actions!=null){ 
Iterator iterator = actions.entrySet().iterator(); 
    B.setDuration(Snackbar.LENGTH_INDEFINITE); 
while (iterator.hasNext()) { 
    Map.Entry pair = (Map.Entry)iterator.next(); 
    B.setAction((String)pair.getKey(),(View.OnClickListener)pair.getValue()); 
    iterator.remove(); // avoids a ConcurrentModificationException 
}} 
switch (priority) 
{ 
    case 0: 
     B.getView().setBackgroundColor(context.getResources().getColor(R.color.color_pinkbutton)); 
     break; 
    case 1: 
     B.getView().setBackgroundColor(Color.parseColor("#66ccff")); 
     break; 
    case 2: 
     B.getView().setBackgroundColor(Color.parseColor("#66ff33")); 
     break; 
} 
B.show(); 

после вызова упомянутого выше метода, используя активность следующим образом

If (NetworkCheck.isNetworkAvailable(this) == false) { MyApplication.snack(null, 0, "Network Connection failed.",class.this);else

ответ

1

Вы можете внести изменения в ваш код следующим образом:

Snackbar B; //make it as global 

    public static void snack (HashMap<String,View.OnClickListener> actions,int priority,String message,Activity context){ 
     B = Snackbar.make(context.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG); 
     if(actions!=null){ 
     Iterator iterator = actions.entrySet().iterator(); 
     B.setDuration(Snackbar.LENGTH_INDEFINITE); 
     while (iterator.hasNext()) { 
     Map.Entry pair = (Map.Entry)iterator.next(); 
     B.setAction((String)pair.getKey(),(View.OnClickListener)pair.getValue()); 
     iterator.remove(); // avoids a ConcurrentModificationException 
     }} 
     switch (priority){ 
     case 0: 
       B.getView().setBackgroundColor(context.getResources().getColor(R.color.color_pinkbutton)); 
      break; 
     case 1: 
      B.getView().setBackgroundColor(Color.parseColor("#66ccff")); 
      break; 
     case 2: 
      B.getView().setBackgroundColor(Color.parseColor("#66ff33")); 
      break; 
    } 
    B.show(); 

Сделайте еще один способ скрыть закусочную как

private static hideSnackbar(){ 
    if(B !=null && B.isShown()){ 
      B.dismiss(); 
    } 
} 

И в вашем состоянии

If (NetworkCheck.isNetworkAvailable(this) == false) { 
    MyApplication.snack(null, 0, "Network Connection failed.",class.this) 
}else{ 
    MyApplication.hideSnackbar(); 
} 
+0

Спасибо за ваш ответ. но в той же активности отображается интернет-отключенная закусочная. после того, как Интернет подключен на той же странице, закусочная не закрыта. – RAMESH

+0

Можете ли вы показать мне код, как вы это делаете ??? отредактируйте ваш вопрос и вставьте код – Pankaj

+0

Я упомянул код любезно проверьте его – RAMESH

0

Вы должны просто создать широковещательный приемник и получить следующее событие <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> и подписаться на него в вашей деятельности/фрагмент

Полная информация здесь http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

+0

Спасибо. Я буду реализовывать в соответствии с вашим сценарием – RAMESH

+0

широкоформатный приемник Я реализовал, но не сработал. Я упомянул код выше. – RAMESH

4

Я сделал этот одиночный класс утилиты. Он сохранил класс приложений более чистым и лучшим для будущей ремонтопригодности закусочных.

public class SnackBarUtils { 
    private static SnackBarUtils mInstance = null; 
    private Snackbar mSnackBar; 

    private SnackBarUtils() { 

    } 

    public static SnackBarUtils getInstance() { 
     if (mInstance == null) { 
      mInstance = new SnackBarUtils(); 
     } 
     return mInstance; 
    } 

    public void hideSnackBar() { 
     if (mSnackBar != null) { 
      mSnackBar.dismiss(); 
     } 
    } 

    public void showProblemSnackBar(final Activity activity, final String message) { 
     mSnackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, Snackbar.LENGTH_INDEFINITE); 
     // Changing action button text color 
     View sbView = mSnackBar.getView(); 
     TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
     textView.setTextColor(Color.YELLOW); 
     mSnackBar.show(); 
    } 
} 
+0

Он не закрывает 'snackbar', когда я вызываю метод' hideSnackBar() '. – Shambhu

Смежные вопросы