【问题标题】:how to add optionMenu in every fragment. ( android + actionsherlock + jfensteinSlidingMenu如何在每个片段中添加 optionMenu。 ( android + actionsherlock + jfensteinSlidingMenu
【发布时间】:2013-01-04 03:10:19
【问题描述】:
  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;
}

}

【问题讨论】:

    标签: android menu actionbarsherlock android-sliding


    【解决方案1】:

    您没有在 Fragments 中添加选项菜单,但在 Fragment Activity 中,Fragment Activity 将充当包含 Fragment 的容器。

    【讨论】:

      【解决方案2】:

      在您的每个片段膨胀选项菜单中也有? 我不知道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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多