我有一个实用程序类,可以在没有互联网的情况下显示小吃店。
我的小吃店代码:
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);
持续时间是无限的,并且当用户单击向互联网设置激发意图的操作按钮时,小吃栏将被关闭。我工作得很好,但是如果用户不使用我的动作就直接拉下状态栏并打开互联网,则小吃店会在那里等待用户输入。我该如何关闭小吃店。在这种情况下,短时间或长时间都不是选择。
答案 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。