【问题标题】:Switch case function opens just the last item开关盒功能只打开最后一项
【发布时间】:2017-12-21 10:40:05
【问题描述】:

您好,我有一个与开关盒功能一起使用的 Navigationmenu。标头组组件用“i”定义。子菜单组件定义为“il”。我试图打开一个子菜单,但它只打开项目 3 上最后定义的链接。为什么子菜单只打开最后一个链接?我的错误在哪里?请帮忙!

这就是功能:

prepareListData();
        mMenuAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild, expandableList);

        // setting list adapter
        expandableList.setAdapter(mMenuAdapter);

        expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
                //Log.d("DEBUG", "submenu item clicked");

                switch (i) {
                    case 0 :
                        webView.loadUrl("http://pixelay.com/");
                        break;

                    case 1 :
                        webView.loadUrl("http://pixelay.com/news/");
                        break;

                    case 2 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/apple/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/apple/iphone/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/apple/ipad/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/apple/mac/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/apple/appletipps/");
                                break;
                            case 5:
                                webView.loadUrl("http://pixelay.com/apple/ios-apps/");
                                break;
                        }

                    case 3 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/android/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/android/smartphones/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/android/tablets/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/android/androidtipps/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/android/android-apps/");
                                break;
                        }

                    ...


                return false;
            }
        });
       ....

【问题讨论】:

  • 调试你的代码,如果没有设置的子值被内部开关采用,它将进入下一个案例。即便如此,你在那里的休息时间是内部开关,而不是外部开关
  • 你检查过i1'的值吗?如果有,它是否有值!= 4
  • case(s) 2 到 7 的外部开关缺少 break 子句
  • @Nilu 谢谢!我改变了它,它工作了:)
  • @ADM 我是 Android Studio 的新手,不知道:/ 但现在我会这样做。谢谢你帮助我

标签: java android webview navigation


【解决方案1】:

您忘记在您的expandableList.setOnChildClickListener 中添加break 语句

以下是您忘记添加break 的一些case

  • case 2
  • case 3
  • case 4
  • case 5

  • case 6

  • case 7

【讨论】:

  • @SinanKara 很乐意为您提供帮助
【解决方案2】:

当您检查“i”值时,case 3case 4case 5case 6case 7 没有中断语句。问题是在这些情况下,当它将遍历 i1 并且如果 i1 不匹配任何嵌套案例,那么它将进入下一个案例。

所以在每个嵌套的switch-case 之后放置break,这将解决您的问题。

【讨论】:

  • 不客气。很高兴能帮到你。您可以接受答案或投票。 :)
【解决方案3】:

您忘记在父案例后添加break

 prepareListData();
        mMenuAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild, expandableList);

        // setting list adapter
        expandableList.setAdapter(mMenuAdapter);

        expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
                //Log.d("DEBUG", "submenu item clicked");

                switch (i) {
                    case 0 :
                        webView.loadUrl("http://pixelay.com/");
                        break;

                    case 1 :
                        webView.loadUrl("http://pixelay.com/news/");
                        break;

                    case 2 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/apple/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/apple/iphone/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/apple/ipad/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/apple/mac/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/apple/appletipps/");
                                break;
                            case 5:
                                webView.loadUrl("http://pixelay.com/apple/ios-apps/");
                                break;
                        }
                    break;
                    case 3 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/android/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/android/smartphones/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/android/tablets/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/android/androidtipps/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/android/android-apps/");
                                break;
                        }
                    break;
                    case 4 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/windows/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/windows/tablets-windows/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/windows/ultrabooks-windows/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/windows/pc-windows/");
                                break;
                        }
                    break;
                    case 5 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/testberichte/smartphone-testberichte/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/testberichte/tablet-testberichte/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/testberichte/ultrabooks-testberichte/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/testberichte/prozessoren-testberichte/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/testberichte/grafikkarten-testberichte/");
                                break;
                        }
                     break;
                    case 6 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/top20/smartphones/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/top20/tablets/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/top20/ultrabooks/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/top20/prozessoren/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/top20/grafikkarten/");
                                break;
                        }
 break;
                    case 7 :
                        switch (i1) {
                            case 0:
                                webView.loadUrl("http://pixelay.com/wallpaper/autos/");
                                break;
                            case 1:
                                webView.loadUrl("http://pixelay.com/wallpaper/natur/");
                                break;
                            case 2:
                                webView.loadUrl("http://pixelay.com/wallpaper/pflanzen/");
                                break;
                            case 3:
                                webView.loadUrl("http://pixelay.com/wallpaper/landschaften/");
                                break;
                            case 4:
                                webView.loadUrl("http://pixelay.com/wallpaper/tiere/");
                                break;
                            case 5:
                                webView.loadUrl("http://pixelay.com/wallpaper/stadtansichten/");
                                break;
                            case 6:
                                webView.loadUrl("http://pixelay.com/wallpaper/struktur/");
                                break;
                            case 7:
                                webView.loadUrl("http://pixelay.com/wallpaper/technik/");
                                break;
                        }
                    break;
                    case 8 :
                        webView.loadUrl("http://pixelay.com/news/");
                        break;
                }

                return false;
            }
        });
        expandableList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
                //Log.d("DEBUG", "heading clicked");
                switch (i) {
                    case 0:
                        webView.loadUrl("http://pixelay.com/");
                        break;

                    case 1:
                        webView.loadUrl("http://pixelay.com/news/");
                        break;

                    case 2:
                        webView.loadUrl("http://pixelay.com/apple/");
                        break;

                    case 3:
                        webView.loadUrl("http://pixelay.com/android/");
                        break;

                    case 4:
                        webView.loadUrl("http://pixelay.com/windows/");
                        break;

                    case 5:
                        webView.loadUrl("http://pixelay.com/testberichte/");
                        break;

                    case 6:
                        webView.loadUrl("http://pixelay.com/top20/");
                        break;

                    case 7:
                        webView.loadUrl("http://pixelay.com/wallpaper/");
                        break;

                    case 8:
                        webView.loadUrl("http://pixelay.com/ueber-uns/");
                        break;

                }


                return false;

            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多