2

Ich habe neun Fragmente in Viewpager. Ich möchte die Fragmentposition auf der Aktionsleiste anzeigen. Wenn der Benutzer am fünften Fragment arbeitet, möchte ich 5 in der rechten Ecke der Aktionsleiste anzeigen. Ich benutze unten Code, aber es zeigt nur 1, aber wenn Benutzer wischen und zum zweiten Fragment verschieben, dann zeigt es nicht 2. Wie kann ich das erreichen oder kann mir jemand andere Idee vorschlagen?Wie wird die Position des Viewpagerfragments in der Aktionsleiste angezeigt?

menu_fragment.xml -

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.prgguru.example.MainActivity" > 

     <item 
      android:id="@+id/fragmentPos" 
      android:title="" 
      android:orderInCategory="100" 
      app:showAsAction="always|collapseActionView"/> 

</menu> 

Mein addOnPageChangeListener unten -

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 


      } 

      @Override 
      public void onPageSelected(int position) { 

       currentPage = position + 1; 


      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 




@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     //inflater.inflate(R.menu.menu_item, menu); 
     getMenuInflater().inflate(R.menu.menu_fragment, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Take appropriate action for each action item click 

     switch (item.getItemId()) { 

      case R.id.fragmentPos: 
       this.setTitle(currentPage); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

Antwort

0

Wenn Sie viewpager Fragmentposition auf der Aktionsleiste bearbeiten Sie dann unten Code meiner bove ques und Sie erfolgreich in der Lage zeigen wollen zeige Seite Nr.

Platz Unten Linie auf onPageScrolled -

supportInvalidateOptionsMenu(); 

Im Folgenden finden Sie onCreateOptionsMenu -

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     //inflater.inflate(R.menu.menu_item, menu); 
     getMenuInflater().inflate(R.menu.menu_fragment, menu); 

     MenuItem item = menu.findItem(R.id.fragmentPos); 
     item.setTitle(String.valueOf(pos)); 

     return super.onCreateOptionsMenu(menu); 
    } 
Verwandte Themen