重新打开应用程序后 Snackbar 不再出现
Snackbar doesn't appear again after Re-Opening the App
我的应用程序使用广播侦听器查找连接状态。
如果 Phone 离线,应该会出现一个 Snackbar。 Snackbar 有一个操作,用于打开网络设置。
如果我点击它,我的网络设置就会打开。如果我不打开我的互联网并返回到应用程序,我的 Snackbar 不会再次显示,尽管它被调用(已检查!)。
如果我将 Snackbar 设置为 null 并再次初始化它,它就可以工作了!
主要活动:
@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;
}
网络侦听器:
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);
}
}
有人知道如何解决这个问题吗?
谢谢!
我通过在 "onResume()" 中重新创建 Snackbar 解决了这个问题。
我的应用程序使用广播侦听器查找连接状态。 如果 Phone 离线,应该会出现一个 Snackbar。 Snackbar 有一个操作,用于打开网络设置。
如果我点击它,我的网络设置就会打开。如果我不打开我的互联网并返回到应用程序,我的 Snackbar 不会再次显示,尽管它被调用(已检查!)。
如果我将 Snackbar 设置为 null 并再次初始化它,它就可以工作了!
主要活动:
@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;
}
网络侦听器:
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);
}
}
有人知道如何解决这个问题吗?
谢谢!
我通过在 "onResume()" 中重新创建 Snackbar 解决了这个问题。