Android 如何将Actionbar项目与Viewpager+;碎片

Android 如何将Actionbar项目与Viewpager+;碎片,android,android-fragments,actionbarsherlock,android-viewpager,menuitem,Android,Android Fragments,Actionbarsherlock,Android Viewpager,Menuitem,我正试图弄清楚如何根据viewpager中加载的片段实现Actionbar项。下面是我的代码,我只是想找出使用ABS+ViewPager+片段的最佳实践 主要活动 在我的主要活动中,我尝试了以下方法,但无法正确获得代码 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater Inflater = getSupportMenuInflater(); Inflater.inflate(R.menu.

我正试图弄清楚如何根据viewpager中加载的片段实现Actionbar项。下面是我的代码,我只是想找出使用ABS+ViewPager+片段的最佳实践

主要活动 在我的主要活动中,我尝试了以下方法,但无法正确获得代码

@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);
}
我正试图弄清楚如何根据viewpager中加载的片段实现Actionbar项

这是自动发生的。只需让片段调用
设置选项菜单(true)
,然后实现
onCreateOptions菜单()
onoptionItemSelected()
Fragment*PagerAdapter
将安排在页面更改后重新填充操作栏,从上一页删除操作栏项目,并从新的当前页面引入操作栏项目


演示操作栏项目的来去,因为只有奇数页(用户看到的基于1的索引)有操作栏项目。

这解决了我的问题,我现在可以使用每个片段中的菜单项,但是,您是否知道如何在片段之间共享菜单项,以便我只能创建3个菜单项,然后它们将在任何片段视图中与webview交互?
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];
}
 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");   
}
@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);
}