如果电话未连接到 Internet,则始终显示我的 Snackbar:
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();
}
还有我的小吃店:
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() 中再次初始化它,它会起作用。
有谁能够帮我?