2016-03-06 101 views
0

我的應用程序使用Broadcastlistener查找Connectivity-State。 如果手機處於離線狀態,應出現小吃店。小吃店有一個行動,打開網絡設置。重新打開應用程序後,不會再出現Snackbar

如果我點擊這個,我的網絡設置打開。如果我沒有打開我的互聯網並返回到應用程序,我的小吃店不會再顯示,雖然它被稱爲(檢查它!)。

如果我將Snackbar設置爲null並將其重新初始化,它將起作用!

MainActivity:

@Override 
protected void onResume() { 
    super.onResume(); 

    registerReceiver(networkListener, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 

    unregisterReceiver(networkListener); 
} 

@Override 
public void ToggleSnackbar(boolean ShowHide) { 
if (ShowHide) { 
    snbInternetState.show(); 
} 
else { 
    snbInternetState.dismiss(); 
} 

    bOnline = ShowHide; 
} 

NetworkListener:

public class NetworkListener extends BroadcastReceiver { 

    private SnackbarInterface snbInterface; 

    public NetworkListener(SnackbarInterface snbInterface) { 
     this.snbInterface = snbInterface; 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo ni = cm.getActiveNetworkInfo(); 

     if (ni == null || !ni.isConnectedOrConnecting()) { 
      snbInterface.ToggleSnackbar(true); 
     } 
     else if (ni != null && ni.isConnected()) { 
      snbInterface.ToggleSnackbar(false); 
     } 
    } 

    public interface SnackbarInterface { 
     void ToggleSnackbar(boolean ShowHide); 
    } 
} 

有誰知道如何解決這個問題?

謝謝!

+0

每次需要時重新創建Snackbar的問題是什麼? – Maverick283

+0

我認爲它不是「最好的」方式......我想知道爲什麼會出現這個問題! –

回答

0

我通過在「onResume()」中重新創建Snackbar解決了這個問題。

相關問題