关闭其他活动中显示的小吃店

时间:2018-06-20 14:26:16

标签: android android-snackbar

我有一个实用程序类,可以在没有互联网的情况下显示小吃店。

我的小吃店代码:

  public void noInternetSnackBar(Activity activity){
        Snackbar snackbar = Snackbar.make(activity.findViewById(android.R.id.content), "Your internet is not working", Snackbar.LENGTH_INDEFINITE);
        snackbar.setActionTextColor(Color.YELLOW);
        snackbar.setAction("Settings", v -> {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setComponent(new ComponentName("com.android.settings",
                    "com.android.settings.Settings$DataUsageSummaryActivity"));
            snackbar.dismiss();
            activity.startActivity(intent);
        });
        snackbar.show();
    }

这就是我所说的:

new Util().noInternetSnackBar(this);

持续时间是无限的,并且当用户单击向互联网设置激发意图的操作按钮时,小吃栏将被关闭。我工作得很好,但是如果用户不使用我的动作就直接拉下状态栏并打开互联网,则小吃店会在那里等待用户输入。我该如何关闭小吃店。在这种情况下,短时间或长时间都不是选择。

1 个答案:

答案 0 :(得分:0)

Util类返回引用。

  public Snackbar noInternetSnackBar(Activity activity){
    Snackbar snackbar = Snackbar.make(activity.findViewById(android.R.id.content), "Your internet is not working", Snackbar.LENGTH_INDEFINITE);
    snackbar.setActionTextColor(Color.YELLOW);
    snackbar.setAction("Settings", v -> {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setComponent(new ComponentName("com.android.settings",
                "com.android.settings.Settings$DataUsageSummaryActivity"));
        snackbar.dismiss();
        activity.startActivity(intent);
    });
    snackbar.show();
    return snackbar;
}

全局保存并在网络可用时将其关闭。

private Snackbar snackbar;
snackbar=new Util().noInternetSnackBar(this);

BroadcastReceiver br = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
        NetworkInfo info = (NetworkInfo) extras.getParcelable("networkInfo");
        NetworkInfo.State state = info.getState();
        if (state == NetworkInfo.State.CONNECTED) {
                if(snackbar!=null){
                    snackbar.dismiss();
                }
        }

    }
};

为了简单和易用性,请使用静态实用程序方法,即将noInternetSnackBar设为static。

相关问题