重新打开应用程序后,Snackbar不再出现

时间:2016-03-06 16:10:06

标签: java android interface snackbar

我的应用程序使用Broadcastlistener查找连接状态。 如果手机处于离线状态,则应显示Snackbar。 Snackbar有一个Action,用于打开Networksettings。

如果点击此按钮,我的网络设置就会被打开。如果我没有打开我的互联网并返回应用程序,我的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);
    }
}

有人知道如何解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我通过在" onResume()"中重新创建Snackbar解决了这个问题。