关闭另一个 activity 显示的快餐栏
Dismiss snackbar shown from another activity
我有一个实用程序 class 可以在没有互联网时显示小吃店。
我的小吃店代码:
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);
持续时间是无限的,当用户单击触发 Internet 设置意图的操作按钮时,快餐栏将被关闭。我工作得很好,但如果用户只是拉下状态栏并打开互联网而不使用我的操作,则小吃店会留在那里等待用户输入。我如何关闭小吃店。在这种情况下,短期或长期都不是一个选项。
Return 参考 Util
Class.
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();
}
}
}
};
为了简单和易用性,使用静态 Utility 方法,即使 noInternetSnackBar
静态。
我有一个实用程序 class 可以在没有互联网时显示小吃店。
我的小吃店代码:
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);
持续时间是无限的,当用户单击触发 Internet 设置意图的操作按钮时,快餐栏将被关闭。我工作得很好,但如果用户只是拉下状态栏并打开互联网而不使用我的操作,则小吃店会留在那里等待用户输入。我如何关闭小吃店。在这种情况下,短期或长期都不是一个选项。
Return 参考 Util
Class.
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();
}
}
}
};
为了简单和易用性,使用静态 Utility 方法,即使 noInternetSnackBar
静态。