java应用程序在试图更改重新加载的片段中的FloatingActionButton的状态时不断崩溃
我正在开发的应用程序中有一些片段。默认片段是HomeFragment
。当活动重新启动时,我根据方法decideDisable()
的结果成功地将HomeFragment中的FloatingActionButton的状态设置为setEnabled(true)
或setEnabled(false)
。但是,当我使用导航抽屉导航到MyAccountFragment
或任何其他片段,并尝试返回到主片段时,应用程序崩溃,出现以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.accessopthalmics.accessophthalmics, PID: 18211
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.support.design.widget.FloatingActionButton.setEnabled(boolean)' on a null object reference
at com.app.Main2Activity.decideDisable(Main2Activity.java:333)
at com.app.Main2Activity$1.onNavigationItemSelected(Main2Activity.java:132)
at 安卓.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:154)
at 安卓.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at 安卓.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at 安卓.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at 安卓.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:342)
at 安卓.view.View.performClick(View.java:5210)
at 安卓.view.View$PerformClick.run(View.java:21183)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5452)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:652)
我使用以下代码设置HomeFragment
:
HomeFragment homeFragment = new HomeFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, homeFragment, "home");
ft.addToBackStack(null);
ft.commit();
return homeFragment;
请注意,每次将HomeFragment加载到视图中时,我都必须对decideDisable()
进行一次重要检查
# 1 楼答案
发生此错误是因为当您再次进入该片段时,您的浮动按钮未初始化。但你可以做以下事情来解决你的问题