如果手机未连接到互联网,则始终会显示我的小吃:
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 {
public void ToggleSnackbar(boolean ShowHide);
}
}
这是我在MainActivity.java中的方法:
@Override
public void ToggleSnackbar(boolean ShowHide) {
bOnline = ShowHide;
if (ShowHide) snbNoInternet.show();
else snbNoInternet.dismiss();
}
我的Snackbar:
snbNoInternet = Snackbar.make(listView, R.string.snb_NoInternet, Snackbar.LENGTH_INDEFINITE);
snbNoInternet.setAction(R.string.snba_OpenSettings, new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
}
});
我确信Snackbar被召唤了! (经测试)
如果我在onPause()中将Snackbar设置为“null”并在onResume()中再次初始化它,它就有效。
有人能帮助我吗?