Java 无需点击按钮的Android片段导航
我正在使用一个使用片段的“抽屉导航”项目,到目前为止,该方法有效:Java 无需点击按钮的Android片段导航,java,android,fragment,android-architecture-navigation,android-navigation,Java,Android,Fragment,Android Architecture Navigation,Android Navigation,我正在使用一个使用片段的“抽屉导航”项目,到目前为止,该方法有效: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Navigation.findNavController(view).navigate(R.id.nav_gallery); } }); 但我想在一个片段
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Navigation.findNavController(view).navigate(R.id.nav_gallery);
}
});
但我想在一个片段类中使用导航方法调用如下函数:
boolean b;
public void fragmentNavigation() {
if (b) {
Navigation.findNavController(getView()).navigate(R.id.nav_gallery);
}
}
我是一个使用导航架构的新手,我仍然不知道是否需要为该功能声明某种类型的操作侦听器,或者如何使其工作。您可以这样做,但请注意:
getView();因此,您必须确保您的片段已经创建了视图
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fragmentNavigation(view);
}
boolean b;
public void fragmentNavigation(View view) {
if (b) {
Navigation.findNavController(view).navigate(R.id.nav_gallery);
}
}
Second:在fragment类中创建一个视图字段,并将其设置在onCreateView()中。
然后总是调用fragmentNavigation(视图)代码>在该视图字段上
您的片段由导航图的NavHostFragment
托管;这样您就可以避免潜在的非法状态异常
View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.main_fragment, container, false);
return view;
}