So verwenden Sie Actionbar-Elemente mit Viewpager + Fragments

Ich versuche herauszufinden, wie man Actionbar-Elemente basierend auf dem Fragment implementiert, das in meinem Viewpager geladen wird. Mein Code ist unten und ich versuche nur herauszufinden, die beste Praxis für die Arbeit mit ABS + ViewPager + Fragments.

Hauptaktivität

public class MainActivity extends SherlockFragmentActivity { private ViewPager mPager; private TitlePageIndicator mIndicator; private MainPagerAdapter mAdapter; private List<Fragment> mFragments; private static final String FRAGMENT1 = Fragment1.class.getName(); private static final String FRAGMENT2 = Fragment2.class.getName(); private static final String FRAGMENT3 = SupportFragment.class.getName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_main); // add fragments mFragments = new ArrayList<Fragment>(); mFragments.add(Fragment.instantiate(this, FRAGMENT1)); mFragments.add(Fragment.instantiate(this, FRAGMENT2)); mFragments.add(Fragment.instantiate(this, FRAGMENT3)); // adapter mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments); // pager mPager = (ViewPager) findViewById(R.id.view_pager); mPager.setAdapter(mAdapter); // indicator mIndicator = (TitlePageIndicator) findViewById(R.id.title_indicator); mIndicator.setViewPager(mPager); } ... 

MainPagerAdapter

 public class MainPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragments; private String[] titles = new String[] {"System", "Community", "Support"}; private int mCount = titles.length; public MainPagerAdapter(FragmentManager fm, List<Fragment> f) { super(fm); mFragments = f; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mCount; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } 

Fragment1

  public class Fragment1 extends SherlockFragment { WebView web; static ProgressBar progressBar; @Override public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) { View v = inf.inflate(R.layout.activity_main, grp, false); web = (WebView) v.findViewById(R.id.webView); progressBar = (ProgressBar) v.findViewById(R.id.progressBar1); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); web.setWebViewClient(new SpecialWebView(progressBar)); web.setWebChromeClient(new SpecialWebChromeClient(progressBar)); // Progress Bar - End WebSettings websettings = web.getSettings(); websettings.setBuiltInZoomControls(false); web.setBackgroundColor(Color.parseColor("#f2f2f2")); websettings.setUseWideViewPort(true); websettings.setJavaScriptEnabled(true); websettings.setAllowFileAccess(true); websettings.setDomStorageEnabled(true); websettings.setLoadWithOverviewMode(true); websettings.setSavePassword(true); web.loadUrl("http://www.google.com"); } 

In meinem MainActivity habe ich das folgende ausprobiert und kann den Code nicht richtig bekommen.

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater Inflater = getSupportMenuInflater(); Inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem Item) { final int current = ((ViewPager) mFragments).getCurrentItem(); String currentId = current == 0 ? FRAGMENT1: (current == 1 ? FRAGMENT2: FRAGMENT3); //WebView web = (WebView) findViewById(currentId); switch (Item.getItemId()) { case R.id.menu_back: // web.goBack(); return true; case R.id.menu_forward: //web.goForward(); return true; case R.id.menu_refresh: //web.reload(); return true; } return super.onOptionsItemSelected(Item); } 

  • Wie kann ich ein MenuItem im Optionsmenü auf Android ändern?
  • Wie kann ich die Sichtbarkeit eines ActionBar-Items in verschiedenen Fragmenten setzen?
  • Android ActionBar MenuItem LowerCase
  • So ändern Sie programmgesteuert Hintergrundfarbe der Aktionsleiste
  • Ist es möglich zu grau (nicht nur deaktivieren) ein MenuItem in Android?
  • Android MenuItem Benutzerdefiniertes Layout
  • Anzeigen von benutzerdefiniertem Layout auf Überlauf Dropdown Menüpunkt? Android
  • Wie kann ich ein Tag auf MenuItem setzen?
  • One Solution collect form web for “So verwenden Sie Actionbar-Elemente mit Viewpager + Fragments”

    Ich versuche herauszufinden, wie man Actionbar-Elemente basierend auf dem Fragment implementiert, das in meinem Viewpager geladen wird.

    Das geschieht automatisch. Nur die Fragmente nennen setHasOptionsMenu(true) , dann implementiere onCreateOptionsMenu() und onOptionsItemSelected() . Das Fragment*PagerAdapter ordnet an, die Fragment*PagerAdapter nach einer Fragment*PagerAdapter zu repopulieren, um Fragment*PagerAdapter aus der vorherigen Seite zu entfernen und Fragment*PagerAdapter aus der neu aktuellen Seite einzuführen.

    Hier ist ein Beispielprojekt, das zeigt, dass Action-Bar-Items kommen und gehen, da nur ungeradzahlige Seiten (für 1-basierte Indizes, was der Benutzer sieht) Action-Bar-Items haben.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.