0
  1. 我正在使用 actionsherlockbar 库 + JfenisteinSlidingMenu

问题:如何在每个片段的操作栏中添加动态选项菜单?

我在下面尝试过,但是每个页面中的选项菜单都是相同的。我该怎么做?

public class FragmentChangeActivity extends BaseActivity  {

private Fragment mContent;
private String json = null;

public FragmentChangeActivity() {
    super(R.string.changing_fragments);
}

@SuppressWarnings("unused")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // set the Above View
    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    if (mContent == null)
        mContent = new ColorFragment(android.R.color.white);    




    // set the Above View
    setContentView(R.layout.content_frame);
    getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, mContent)
    .commit();

    // set the Behind View
    ColorMenuFragment colorMenuFragment = new ColorMenuFragment();
    LeftMenuFragment leftMenu = new LeftMenuFragment();
    setBehindContentView(R.layout.menu_frame);
    getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.menu_frame, colorMenuFragment)
    .commit();

    // customize the SlidingMenu
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}

public void switchContent(Fragment fragment) {
    mContent = fragment;
    getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, fragment)
    .commit();
    getSlidingMenu().showAbove();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        toggle();
        return true;
    case R.id.github:
        Utils.goToGitHub(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
4

2 回答 2

0

您不会在 Fragments 中添加选项菜单,但在 Fragment Activity 和 Fragment Activity 中将充当包含片段的容器。

于 2013-01-04T11:15:53.767 回答
0

在你的每个片段膨胀选项菜单中也有?我不了解 lib,但希望这可以帮助你很好地为我工作。只是在你的 onOptionsItemSelected 中返回 false 看这个例子

在我的活动中

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.action:
    //Do something
            break;

        default:break;
    }
    return false;
}

在我的片段中

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

}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()){
      case R.id.fragment_action:
         //Do something
          break;
  }
    return true;
}
于 2018-01-16T03:45:52.700 回答