2017-12-21 6 views
-4

Hallo Ich habe ein Navigationsmenü, das mit einer Switch-Case-Funktion arbeitet. Die Kopfgruppen-Komponenten sind mit einem "i" definiert. Die Untermenü-Komponente wird als "il" definiert. Ich versuche ein Untermenü zu öffnen, aber es öffnet nur den letzten definierten Link zu Punkt 3. Warum öffnet das Untermenu nur den letzten Link? Und wo ist mein Fehler? Bitte helfen Sie!Switch-Case-Funktion öffnet nur das letzte Element

Das ist die Funktion:

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; 
      } 
     }); 
     .... 
+0

Debuggen Sie Ihren Code, wenn keiner der eingestellten Sub-Werte von der inneren Schalter genommen wird, wird es Wasserfall zu den nächsten Fällen gehen. Selbst dann sind die Pausen, die Sie dort haben, für die inneren Schalter, nicht für die äußeren Schalter – Stultuske

+0

Haben Sie den "i1" Wert überprüft? Wenn ja, hat es einen Wert "! = 4"? – Turing85

+2

der äußere Schalter für Fall (e) 2 bis 7 fehlt die Bruchklausel – Blackbelt

Antwort

2

Sie haben vergessen, in break Anweisung fügen Sie Ihre expandableList.setOnChildClickListener

Im Folgenden sind einige case in was Sie vergessen haben, break

012 hinzuzufügen
  • case 2
  • case 3
  • case 4
  • case 5

  • case 6

  • case 7
+2

Danke!Ich änderte es und es funktionierte :) –

+0

@SinanKara glücklich, Ihnen zu helfen –

0

Sie haben vergessen break nach Mutter Fälle hinzufügen:

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; 

      } 
     }); 
+0

Vielen Dank, es hat funktioniert :) @Md. Didarul islam –

1

ist keine break-Anweisungen für die Es case 3, case 4, case 5, case 6 und case 7, wenn Sie für 'i' Wert überprüft. Problem ist in diesen Fällen, wenn es für i1 traversiert und wenn i1 keinem der verschachtelten Fälle entspricht, dann wird es für nächsten Fall gehen.

Also Platz break nach jedem verschachtelten switch-case, die Ihr Problem lösen wird.

+0

Danke! Ich habe es geändert und es hat funktioniert :) –

+0

Gern geschehen. Glücklich, dass ich dir helfen konnte. Sie können die Antwort oder das Upvote akzeptieren. :) –

Verwandte Themen