我已经在我的主要活动中添加了一个模式底部工作表,每当用户GPS/互联网关闭时显示。我已经添加了一个LocalBroadcast接收器,当用户从电话上打开他的全球定位系统/互联网时,它可以很好地收听。所以我需要当用户打开全球定位系统/互联网来隐藏模式底板,当他关闭它时,总是显示底板。我已经尝试了this,它只在应用程序的初始启动时工作,也就是说,当全球定位系统关闭时,对话框显示当用户打开全球定位系统时,它就消失了,但问题是,当用户现在关闭全球定位系统时,它第一次被解除,当用户现在关闭全球定位系统时,它不会像预期的那样显示,广播接收器被触发。这是我的广播接收器
private BroadcastReceiver locationSwitchStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (android.location.LocationManager.PROVIDERS_CHANGED_ACTION.equals(intent.getAction())) {
validateGPSAndInternet();
}
}
};
发布于 2020-03-04 15:06:33
您可以在ConnectionBottomSheet中声明静态变量,以便在片断之外关闭底部工作表。
public class ConnectionBottomSheet extends BottomSheetDialogFragment {
public static ConnectionBottomSheet fragment;
//your code
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
CON_TYPE = getArguments().getString(con_type);
}
fragment=this;
}
@Override
public void onDestroy() {
super.onDestroy()
fragment=null;
}
//your code
}
在主活动中调用
if(ConnectionBottomSheet.fragment!=null && ConnectionBottomSheet.fragment.getDialog()!=null)
ConnectionBottomSheet.fragment.getDialog().dismiss()
https://stackoverflow.com/questions/60520351
复制相似问题