Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 Android-Jetpack导航_Java_Android_Android Jetpack Navigation - Fatal编程技术网

Java Android-Jetpack导航

Java Android-Jetpack导航,java,android,android-jetpack-navigation,Java,Android,Android Jetpack Navigation,在Android Studio中使用Kotlin语言创建一个新项目并选择导航抽屉活动后,导航就像一个魔咒一样工作。但当我用Java语言生成同一个项目时,它不会导航到另一个片段。这个怎么了?有人能帮我吗?我也有同样的问题 我的解决办法是: 修改main_activity.xml:将NavigationView标记移动到抽屉布局的末尾 如何得到这个问题 环境: 安卓工作室:3.5 编译版本:29 BuildTools版本:“29.0.0” targetSdkVersion:29 步骤: 进入安

在Android Studio中使用Kotlin语言创建一个新项目并选择导航抽屉活动后,导航就像一个魔咒一样工作。但当我用Java语言生成同一个项目时,它不会导航到另一个片段。这个怎么了?有人能帮我吗?

我也有同样的问题

我的解决办法是: 修改main_activity.xml:将NavigationView标记移动到抽屉布局的末尾

如何得到这个问题 环境:

  • 安卓工作室:3.5
  • 编译版本:29
  • BuildTools版本:“29.0.0”
  • targetSdkVersion:29
步骤:

  • 进入安卓工作室
    • 文件->新建->新模块->手机和平板电脑模块->下一步->输入“测试”作为应用程序/库名称->下一步->导航抽屉活动->下一步->完成
    • 选择模块“测试”,然后单击运行按钮
  • 进入android手机
    • 默认情况下,该页面显示HomeFragment
    • 单击
      菜单按钮
      滑入抽屉布局
    • 单击菜单中的
      gallery
    • 抽屉布局已关闭,但碎片未更改为GalleryFragment
解决方案 最后,我找到了解决方案:

修改main_activity.xml:将NavigationView标记移动到抽屉布局的末尾

android studio生成的默认main_activity.xml为:


我们应该这样更改它(将
NavigationView
移动到
DrawerLayout
的末尾):


这个问题是怎么来的 我们可以通过DroperLayout和ViewDragHelper的源代码找到原因:

抽屉布局

public类抽屉布局扩展了视图组{
//..........
@凌驾
公共布尔值onInterceptTouchEvent(MotionEvent ev){
final int action=ev.getActionMasked();
//.........
布尔值fortap=false;
开关(动作){
case MotionEvent.ACTION\u DOWN:{
最终浮点数x=ev.getX();
最终浮动y=ev.getY();
如果(mScrimOpacity>0){
/////////////////
//
//看看:ViewDragHelper.findTopChildUnder(x,y)
//它从最后一个到第一个查找孩子
//
/////////////////
最终视图子对象=mLeftDragger.findTopChildUnder((int)x,(int)y);
if(child!=null&&isContentView(child)){
//如果子级是抽屉布局的contentView,则截取它
fortap=true;
}
}
//.........
打破
}
//...........
}
返回interceptForDrag | | interceptForTap | | hasPeekingDrawer()| | McChildrenCanceledTouch;
}
//...........
}
视图绘制器

public类ViewDragHelper{
//.........
@可空
公共视图findTopChildUnder(整数x,整数y){
final int childCount=mParentView.getChildCount();
对于(int i=childCount-1;i>=0;i--){
final View child=mParentView.getChildAt(mCallback.getOrderedChildIndex(i));
如果(x>=child.getLeft()&&x=child.getTop()&&y
请提供更多信息,如异常stacktrace、导致问题的代码或您试图解决的问题。我只是使用导航抽屉活动和Java语言创建了一个新项目,但当我单击菜单时,它不起作用。我不会添加一些代码或任何东西。这只是一个新项目@SanketBhat@HusniKamal当前位置如果你不提供更多信息,任何人都不可能知道你那边出了什么问题,问题很可能就解决了。如果您不知道相关代码是什么,那么将项目上传到github可能会让人们看到问题。“创建新项目后”不清楚?没关系,谢谢您的回复:)@ChristianUpdate:当我使用导航抽屉活动创建一个新项目时,活动\u main已更改,与您的代码@billy相同