在片段中使用sherlock操作栏导航不起作用

时间:2013-03-09 10:35:25

标签: android android-fragments android-actionbar actionbarsherlock android-fragmentactivity

我的问题是,当我点击一个操作栏项onOptionsItemSelected被调用但没有工作。

我只想让后退按钮起作用。 这是我的代码,这是在SherlockFragment文件中:

actionbar = getSherlockActivity().getSupportActionBar();
actionbar.setDisplayHomeAsUpEnabled(true);

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


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.detailitem1:          
        break;
    case android.R.id.home:
        getActivity().onBackPressed();
        break;
    default:
        return super.onOptionsItemSelected(item);
    }
    return false;
}

菜单项是com.actionbarsherlock.view.MenuItem。 我添加了setHasOptionsMenu(true);在onCreate上也试过onCreateView。

onBackPressed就是这个,它在SherlockFragmentActivity中:

@Override
public void onBackPressed() {
    Saved = SP.getBoolean("saved", false);
    if ((getSupportFragmentManager().findFragmentByTag("detail") == null)
            | mTwoPane) {
        ready = true;
    } else
        ready = false;
    if (!Saved && ready) {
        new AlertDialog.Builder(this)
        .....
    }else if (Saved && ready){
        super.onBackPressed();
    }else {
        someListFragment Fragment = new someListFragment ();
        Fragment .setArguments(getIntent().getExtras());
        Fragment .setHasOptionsMenu(true);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment_container, Fragment, "listview")
                .commit();
    }
}

在onbackpressed中,当我们处于双窗格模式时,ready就是真的,所以当使用平板电脑时,或者如果我们在第一个片段中(所以第二个片段为空)。

如果按下后退按钮一切正常,则会更换碎片。 但是,当我点击操作栏中的后退按钮时,它将返回上一个活动。

即使我使用了getActivity()。onBackPressed(); onBackPressed的其他声明我不起作用。

有谁知道解决方案是什么,我做错了什么?

1 个答案:

答案 0 :(得分:0)

抱歉,我有点懒,我忘了我在我的FragmantActivity中有一个onOptionsItemSelected,后面的按钮是android.R.id.home,所以我把if语句放在那里,瞧。