Snackbar不响应snackbar.dismiss()

4

我有一个关于snackbar的问题。我的snackbar无法被关闭。

我的代码:

ConnectivityReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager cm =
                    (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

            Snackbar snackbar = Snackbar
                    .make(drawer, getResources().getString(R.string.no_internet), Snackbar.LENGTH_INDEFINITE)
                    .setAction(getResources().getString(R.string.settings), new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
                        }
                    });

            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            boolean isConnected = activeNetwork != null &&
                    activeNetwork.isConnectedOrConnecting();

            if(!isConnected){
                snackbar.show();
            }else {
                snackbar.dismiss();
            }
        }
    };

我检查了一下,如果 isConnected 返回 true,我的应用程序会处于 else 状态。感谢您的帮助。

1个回答

5

您试图关闭一个未显示的 Snackbar,因为您没有对之前创建的 Snackbar 进行引用。将 Snackbar 声明为类的字段,它就可以正常工作了。


1
实际上,OP需要将其变成类字段并仅初始化一次。现在它是一个局部字段。 - Droidman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接