Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.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 尝试在片段中显示或隐藏浮动操作按钮时出错_Java_Android_Fragment_Floating Action Button - Fatal编程技术网

Java 尝试在片段中显示或隐藏浮动操作按钮时出错

Java 尝试在片段中显示或隐藏浮动操作按钮时出错,java,android,fragment,floating-action-button,Java,Android,Fragment,Floating Action Button,我试图从一个片段移动到另一个片段,隐藏浮动动作按钮,然后从第二个片段返回到第一个片段,再次显示按钮。浮动操作按钮位于主活动内 Mainactivity.java: 包装cl.itn.cam; 导入android.os.Bundle; 导入com.google.android.material.floatingactionbutton.floatingactionbutton; 导入com.google.android.material.snackbar.snackbar; 导入androidx.

我试图从一个片段移动到另一个片段,隐藏浮动动作按钮,然后从第二个片段返回到第一个片段,再次显示按钮。浮动操作按钮位于主活动内

Mainactivity.java:

包装cl.itn.cam;
导入android.os.Bundle;
导入com.google.android.material.floatingactionbutton.floatingactionbutton;
导入com.google.android.material.snackbar.snackbar;
导入androidx.appcompat.app.appcompat活动;
导入androidx.appcompat.widget.Toolbar;
导入androidx.fragment.app.fragment;
导入androidx.fragment.app.FragmentTransaction;
导入androidx.navigation.fragment.NavHostFragment;
导入android.view.view;
公共类NCR扩展了AppCompative活动{
零碎交易;
碎片碎片第一,碎片第二;
FloatingActionButton fab=findViewById(R.id.fab);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u n\u c\R);
fragmentFirst=新的FirstFragment();
fragmentSecond=新的SecondFragment();
}
公共浮动ActionButton getFloatingActionButton(){
返回晶圆厂;
}
public void showFloatingActionButton(){
fab.show();
}
public void hideFloatingActionButton(){
制作隐藏();
}
}
FirstFragment.java:

public类FirstFragment扩展了Fragment{
@凌驾
公共视图onCreateView(
充气机、视图组容器、,
捆绑存储状态
) {
最终FloatingActionButton fab=((NCR)getActivity()).getFloatingActionButton();
如果(fab!=null){
((NCR)getActivity()).hideFloatingActionButton();
}
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_first,container,false);
}
已创建公用void onview(@NonNull视图,Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
view.findViewById(R.id.button_first).setOnClickListener(new view.OnClickListener()){
@凌驾
公共void onClick(视图){
NavHostFragment.findNavController(FirstFragment.this)
.导航(R.id.action_FirstFragment_至_SecondFragment);
}
});
}
}
SecondFragment.java:

public类SecondFragment扩展了片段{
@凌驾
公共视图onCreateView(
充气机、视图组容器、,
捆绑存储状态
) {
最终FloatingActionButton fab=((NCR)getActivity()).getFloatingActionButton();
如果(fab!=null){
((NCR)getActivity()).showFloatingActionButton();
}
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_second,容器,假);
}
已创建公用void onview(@NonNull视图,Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
view.findViewById(R.id.button_second).setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
NavHostFragment.findNavController(SecondFragment.this)
.导航(R.id.action_SecondFragment_至_FirstFragment);
}
});
}
应用程序在尝试显示具有以下堆栈跟踪的主要活动时崩溃:

**2021-03-19 11:04:56.979 32471-32471/cl.itn.cam E/AndroidRuntime:致命异常:main 工艺:cl.itn.cam,PID:32471 java.lang.RuntimeException:无法实例化活动组件信息{cl.itn.cam/cl.itn.cam.NCR}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()” 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3401)上 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3620)上 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2183) 位于android.os.Handler.dispatchMessage(Handler.java:107) 位于android.os.Looper.loop(Looper.java:241) 位于android.app.ActivityThread.main(ActivityThread.java:7604) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941) 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()” **

试着替换

final FloatingActionButton fab=((NCR)getActivity()).getFloatingActionButton();

在您的片段中。这将删除错误

已解决

在公共类NCR中,我将“FloatingActionButton fab=findViewById(R.id.fab);”替换为“FloatingActionButton fab;”,然后在一次创建事件中添加了“fab=findViewById(R.id.fab);”

谢谢

FloatingActionButton fab = findViewById(R.id.fab);