Navigation管理了NavigationView的点击事件,如何不让他导航?

天杪 2020-04-30 08:37:38
现在点击NavigationView的item会自动导航到相关的界面,如果我不导航只是想触发一个点击事件显个Toast,用Navigation有法做到吗?
...全文
586 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天杪 2020-05-13
  • 打赏
  • 举报
回复
不支持,此贴终结,下面是导航的源码。
    public static boolean onNavDestinationSelected(@NonNull MenuItem item,
            @NonNull NavController navController) {
        NavOptions.Builder builder = new NavOptions.Builder()
                .setLaunchSingleTop(true)
                .setEnterAnim(R.anim.nav_default_enter_anim)
                .setExitAnim(R.anim.nav_default_exit_anim)
                .setPopEnterAnim(R.anim.nav_default_pop_enter_anim)
                .setPopExitAnim(R.anim.nav_default_pop_exit_anim);
        if ((item.getOrder() & Menu.CATEGORY_SECONDARY) == 0) {
            builder.setPopUpTo(findStartDestination(navController.getGraph()).getId(), false);
        }
        NavOptions options = builder.build();
        try {
            //TODO provide proper API instead of using Exceptions as Control-Flow.
            navController.navigate(item.getItemId(), null, options);//不能传递数据
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }
天杪 2020-04-30
  • 打赏
  • 举报
回复
引用 3 楼 six周 的回复:
[quote=引用 2 楼 天杪 的回复:] [quote=引用 1 楼 键盘舞者113 的回复:] 重写接口就好了

navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() {

public boolean onNavigationItemSelected( MenuItem item) {

textView1.setText( "您选择的是:"+"  "+item.getTitle().toString() );

return true;

    }

} );

我记得重写此方法后,Navigation导航会失效。[/quote] 你的需求不就是不到导航界面吗,你重写点击事件不进入导航只弹消息就是这样啊,如果你又想弹框又想到导航就把跳转导航界面的跳转代码加上就OK了[/quote] 关键 Navigation 他是怎么导的航我不知道。 我看你们二位说的都是NavigationView,但是我估计点击事件是被Navigation处理了。现在看来这东西只能跳转到界面,不能单纯的处理非导航事件。
six周 2020-04-30
  • 打赏
  • 举报
回复
引用 2 楼 天杪 的回复:
[quote=引用 1 楼 键盘舞者113 的回复:] 重写接口就好了

navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() {

public boolean onNavigationItemSelected( MenuItem item) {

textView1.setText( "您选择的是:"+"  "+item.getTitle().toString() );

return true;

    }

} );

我记得重写此方法后,Navigation导航会失效。[/quote] 你的需求不就是不到导航界面吗,你重写点击事件不进入导航只弹消息就是这样啊,如果你又想弹框又想到导航就把跳转导航界面的跳转代码加上就OK了
天杪 2020-04-30
  • 打赏
  • 举报
回复
引用 1 楼 键盘舞者113 的回复:
重写接口就好了

navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() {

public boolean onNavigationItemSelected( MenuItem item) {

textView1.setText( "您选择的是:"+"  "+item.getTitle().toString() );

return true;

    }

} );

我记得重写此方法后,Navigation导航会失效。
键盘舞者113 2020-04-30
  • 打赏
  • 举报
回复
重写接口就好了

navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() {

public boolean onNavigationItemSelected( MenuItem item) {

textView1.setText( "您选择的是:"+"  "+item.getTitle().toString() );

return true;

    }

} );

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧