1

如果电话未连接到 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() 中再次初始化它,它会起作用。

有谁能够帮我?

4

0 回答 0