2016-08-07 28 views
0

Ich habe AVSLIDE-Funktion in meiner App implementiert, die einen Pfeil zeigt, der Ihnen sagt, welche Art und Weise Sie gleiten können. Ich habe 5 Fragmente, zwischen denen man rutschen kann, und ich möchte weder einen linken Pfeil auf dem ersten Fragment noch einen rechten Pfeil auf dem letzten Fragment haben. Der linke Pfeil erscheint jedoch auf dem ersten Fragment, verschwindet aber auf dem zweiten, und aus irgendeinem Grund fügt er 6 Fragmente hinzu, obwohl ich nur 5 brauche. Meine Theorie ist, dass er denkt, dass das zweite Fragment irgendwie das erste ist. Ich habe im Code kommentiert, wo ich mit den Pfeilen hantiere.Textansicht nicht auf dem rechten Fragment angezeigt

Jede Hilfe wird sehr geschätzt.

@Override 
     public boolean onFling(MotionEvent event1, MotionEvent event2, 
           float velocityX, float velocityY) { 


      if(event2.getX() < event1.getX()){ 
       if(currentFragment == 0){ //I HANDLE THE ARROWS HERE 
        leftarrow.setVisibility(View.INVISIBLE); 
       } else if (currentFragment ==4){ 
        rightarrow.setVisibility(View.INVISIBLE); 
       } 

       if(currentFragment == 0) { 
        removeFragment(); 
        Bottomsection1 bottom1 = new Bottomsection1(); 
        addDynamicFragment(bottom1); 
        currentFragment = 1; 
       }else if(currentFragment ==1) { 
        removeFragment(); 
        Bottomsection2 bottom2 = new Bottomsection2(); 
        addDynamicFragment(bottom2); 
        currentFragment = 2; 
       }else if(currentFragment ==2) { 
        removeFragment(); 
        Bottomsection3 bottom3 = new Bottomsection3(); 
        addDynamicFragment(bottom3); 
        currentFragment = 3; 
       }else if(currentFragment ==3) { 
        removeFragment(); 
        Bottomsection4 bottom4 = new Bottomsection4(); 
        addDynamicFragment(bottom4); 
        currentFragment = 4; 
       } 
      } 
      else{ 
       if(event2.getX() > event1.getX()) { 
        if(currentFragment==1) { 
         removeFragment(); 
         Bottomsection bottom = new Bottomsection(); 
         addDynamicFragment(bottom); 
         currentFragment = 0; 
        } else if(currentFragment==2) { 
         removeFragment(); 
         Bottomsection1 bottom1 = new Bottomsection1(); 
         addDynamicFragment(bottom1); 
         currentFragment = 1; 
        }else if(currentFragment==3) { 
         removeFragment(); 
         Bottomsection2 bottom2 = new Bottomsection2(); 
         addDynamicFragment(bottom2); 
         currentFragment = 2; 
        }else if(currentFragment==4) { 
         removeFragment(); 
         Bottomsection3 bottom3 = new Bottomsection3(); 
         addDynamicFragment(bottom3); 
         currentFragment = 3; 
        } 
       } 
      } 
      return true; 
     } 

Dies ist addDynamicFragment:

private void addDynamicFragment(Fragment bottomsection) { 
     FragmentManager FRAGMENTMANAGER=getFragmentManager(); 
     FragmentTransaction FRAGMENTTRANSACTION = FRAGMENTMANAGER.beginTransaction(); 

     activeCenterFragments.add(bottomsection); 

     FRAGMENTTRANSACTION.add(R.id.Buttons, bottomsection); 
     FRAGMENTTRANSACTION.commit(); 
    } 

Dies ist die removeFragment Methode:

private void removeFragment() 
    { 
     FragmentManager FRAGMENTMANAGER=getFragmentManager(); 
     FragmentTransaction FRAGMENTTRANSACTION = FRAGMENTMANAGER.beginTransaction(); 

     if (activeCenterFragments.size() > 0) { 
      FRAGMENTTRANSACTION = FRAGMENTMANAGER.beginTransaction(); 
      for (Fragment activeFragment : activeCenterFragments) { 
       FRAGMENTTRANSACTION.remove(activeFragment); 
      } 
      activeCenterFragments.clear(); 
      FRAGMENTTRANSACTION.commit(); 
     } 
+0

Können Sie Ihre addDynamicFragment-Methode einbeziehen? –

+0

Ja sicher, habe das OP bearbeitet –

+0

Kannst du mir helfen? –

Antwort

0

ich Ihre Pfeil Bedingungen angepasst und bewegt sie aus ihren jeweiligen if-Anweisungen. Dies sollte das Pfeilproblem beheben.

Override 
    public boolean onFling(MotionEvent event1, MotionEvent event2, 
          float velocityX, float velocityY) { 

     if(currentFragment == 0){ //I HANDLE THE ARROWS HERE 
       leftarrow.setVisibility(View.INVISIBLE); 
       rightarrow.setVisibility(View.VISIBLE); 
      } else if (currentFragment ==4){ 
       rightarrow.setVisibility(View.INVISIBLE); 
       leftarrow.setVisibility(View.VISIBLE); 
      } else { 
       rightarrow.setVisibility(View.VISIBLE); 
       leftarrow.setVisibility(View.VISIBLE); 
      } 

     if(event2.getX() < event1.getX()){ 


      if(currentFragment == 0) { 
       removeFragment(); 
       Bottomsection1 bottom1 = new Bottomsection1(); 
       addDynamicFragment(bottom1); 
       currentFragment = 1; 
      }else if(currentFragment ==1) { 
       removeFragment(); 
       Bottomsection2 bottom2 = new Bottomsection2(); 
       addDynamicFragment(bottom2); 
       currentFragment = 2; 
      }else if(currentFragment ==2) { 
       removeFragment(); 
       Bottomsection3 bottom3 = new Bottomsection3(); 
       addDynamicFragment(bottom3); 
       currentFragment = 3; 
      }else if(currentFragment ==3) { 
       removeFragment(); 
       Bottomsection4 bottom4 = new Bottomsection4(); 
       addDynamicFragment(bottom4); 
       currentFragment = 4; 
      } 
     } 
     else{ 
      if(event2.getX() > event1.getX()) { 

       if(currentFragment==1) { 
        removeFragment(); 
        Bottomsection bottom = new Bottomsection(); 
        addDynamicFragment(bottom); 
        currentFragment = 0; 
       } else if(currentFragment==2) { 
        removeFragment(); 
        Bottomsection1 bottom1 = new Bottomsection1(); 
        addDynamicFragment(bottom1); 
        currentFragment = 1; 
       }else if(currentFragment==3) { 
        removeFragment(); 
        Bottomsection2 bottom2 = new Bottomsection2(); 
        addDynamicFragment(bottom2); 
        currentFragment = 2; 
       }else if(currentFragment==4) { 
        removeFragment(); 
        Bottomsection3 bottom3 = new Bottomsection3(); 
        addDynamicFragment(bottom3); 
        currentFragment = 3; 
       } 
      } 
     } 
     return true; 
    } 
+0

Es denkt irgendwie immer noch, dass das zweite Fragment das erste ist, und es fügen noch 6 Fragmente hinzu, weil ich auf dem 5. Fragment nach rechts rutschen muss, um den rechten Pfeil verschwinden zu lassen. –