onResume()之后没有显示Snackbar,但它被调用了

时间:2016-03-02 18:08:10

标签: java android onresume 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();
}

我的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()中再次初始化它,它就有效。

有人能帮助我吗?

0 个答案:

没有答案