Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用Disclose时,模式底部工作表未重新显示_Java_Android - Fatal编程技术网

Java 调用Disclose时,模式底部工作表未重新显示

Java 调用Disclose时,模式底部工作表未重新显示,java,android,Java,Android,我已经在我的主要活动中添加了一个模式底页,以便在用户GPS/互联网关闭时显示。我添加了一个LocalBroadcast接收器,当用户从手机上打开GPS/互联网时可以收听,效果很好。因此,我需要当用户打开GPS/互联网时隐藏模式底片,当用户关闭时始终显示底片。我尝试了仅在应用程序初始启动时有效的方法,也就是说,当GPS关闭时,当用户打开GPS时显示底片对话框,它消失了,但问题在之后当用户现在关闭gps时,第一次被解除,因为它没有按预期显示,广播接收器被触发。这是我的广播接收器 private B

我已经在我的主要活动中添加了一个模式底页,以便在用户GPS/互联网关闭时显示。我添加了一个LocalBroadcast接收器,当用户从手机上打开GPS/互联网时可以收听,效果很好。因此,我需要当用户打开GPS/互联网时隐藏模式底片,当用户关闭时始终显示底片。我尝试了仅在应用程序初始启动时有效的方法,也就是说,当GPS关闭时,当用户打开GPS时显示底片对话框,它消失了,但问题在之后当用户现在关闭gps时,第一次被解除,因为它没有按预期显示,广播接收器被触发。这是我的广播接收器

 private BroadcastReceiver locationSwitchStateReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            if (android.location.LocationManager.PROVIDERS_CHANGED_ACTION.equals(intent.getAction())) {

             validateGPSAndInternet();

            }
        }
    };

您可以在ConnectionBottomSheet中声明静态变量,以便在out of fragment上关闭底部工作表

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()

尝试getDialog().Dislose()而不是getActivity().finish()@RajasekaranM tht在BottomSheet对话框中运行良好,但我需要将其从主要活动中删除哦!是否仅在mainActivity上显示此警报?或者其他一些地方如果没有gps,我会在主活动上显示此警报对话框,否则它应该是不可见的。在我的帖子中,我添加了一个广播接收器来收听这些变化,效果很好。我的主要错误是,当底部页面显示时,用户打开手机中的gps时,广播接收器能够检测到这些变化,但当触发关闭底部页面时,我得到空指针异常。我猜你现在明白我的问题了,但当我试着打开和关闭时,我得到了这个错误。java.lang.IllegalStateException:已添加片段:android.support.v4.app.FragmentManagerImpl.AddFragmentManager(FragmentManager.java:1916)处android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:765)处android.support.v4.app.FragmentManagerImpl.executeOps处的ConnectionBottom{(FragmentManager.java:2625)在android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.jav)上运行。如果您离开设备,您的bottomsheet将被关闭。因此检查片段是否添加(
isAdded()
将有帮助)如果启动应用程序时gps关闭,则会显示底部工作表。如果我打开它,则会消失。如果我再次打开底部工作表,则不会显示,并且当您为底部工作表调用dissmiss()时,BroadCastReceiver会触发。这是我的最新代码,底部工作表切换不起作用。仅在第一次启动应用程序时有效。