3

私のアプリは と を使用ActionbarsherlockViewpagerIndicatorます。各ページは 1 つのフラグメントを使用します。各ページに異なるアクションバー メニューを用意したいのですが、これをアーカイブするにはどうすればよいですか?

onCreateOptionsMenuそれぞれで使用してみましSherlockFragmentたが、アクションバーメニューが表示されません。また、プログラムでメニューを追加する方法をいくつか見つけようとしましたが、方法がありませんでした。

@Override
public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, com.actionbarsherlock.view.MenuInflater inflater)
{       
    inflater.inflate(R.menu.main, menu);    
    super.onCreateOptionsMenu(menu, inflater);
}

ありがとうございます!

*編集:詳細を追加*

アクティビティで onCreateOptionsMenu を使用すると、メニュー (アクション アイテム) が正常に表示されます。

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getSupportMenuInflater();
    menuInflater.inflate(R.menu.main, menu);

これは、ViewPager に ActionBar を設定する方法です

final ActionBar actionbar = getSupportActionBar();
    actionbar .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionbar .setDisplayHomeAsUpEnabled(true);
    actionbar .setTitle("olala");

    mFragmentAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());     
    mPager.setAdapter(mFragmentAdapter);

    mIndicator.setViewPager(mPager);
    mIndicator.setOnPageChangeListener(new MyPageChangeListener());
    mPager.setCurrentItem(3);
4

2 に答える 2

5

これを Fragment (onCreate または onCreateView) に追加して、onCreateOptionsMenu(Menu, MenuInflater) および関連メソッドへの呼び出しを受け取ることにより、このフラグメントがオプション メニューの設定に参加することを報告する必要があります。

setHasOptionsMenu(true);

参照: http://developer.android.com/reference/android/app/Fragment.html

于 2012-05-23T15:52:15.170 に答える
1

への呼び出しがなくても同じsuperです。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.chat_thread_list_fragment_menu, menu);
}

アップデート:

アクティビティの onCreate でこれを設定しました...

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile_activity);
    final ViewPager viewPager = (ViewPager) findViewById(R.id.profile_activity_pager);

    final Intent intent = getIntent();

    // I guess some setup should be done...
    final ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    bar.setDisplayHomeAsUpEnabled(true);
    if (intent.hasExtra(EXTRA_USER_NAME)) {
        bar.setTitle(intent.getStringExtra(EXTRA_USER_NAME));
    } else {
        bar.setTitle(R.string.title_profile);
    }

    final PagerAdapter tabsAdapter = new TabsAdapter(this);
    viewPager.setAdapter(tabsAdapter);

    final TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.profile_activity_tabs);
    titleIndicator.setViewPager(viewPager);

    if (intent.hasExtra(EXTRA_TAB_ID)) {
        final int tabId = intent.getIntExtra(EXTRA_TAB_ID, -1);
        if (tabId > -1 && tabId < tabsAdapter.getCount()) {
            viewPager.setCurrentItem(tabId);
        }
    }
}
于 2012-05-23T12:58:54.590 に答える