Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在片段中使用sherlockactionbar导航不起作用_Android_Android Fragments_Android Actionbar_Actionbarsherlock_Android Fragmentactivity - Fatal编程技术网

Android 在片段中使用sherlockactionbar导航不起作用

Android 在片段中使用sherlockactionbar导航不起作用,android,android-fragments,android-actionbar,actionbarsherlock,android-fragmentactivity,Android,Android Fragments,Android Actionbar,Actionbarsherlock,Android Fragmentactivity,我的问题是,当我单击操作栏上的某个项目时,OptionsItemSelected被调用但不起作用 我只想让后退按钮起作用。 这是我的代码,在SherlockFragment文件中: actionbar = getSherlockActivity().getSupportActionBar(); actionbar.setDisplayHomeAsUpEnabled(true); @Override public void onCreateOptionsMenu(final Menu menu,

我的问题是,当我单击操作栏上的某个项目时,OptionsItemSelected被调用但不起作用

我只想让后退按钮起作用。 这是我的代码,在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。 我添加了SetHasOptions菜单(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为true,因此当使用tablet时,或者如果我们处于第一个片段中(因此第二个片段为null)

如果我按下后退按钮,一切正常,碎片就会被替换。 但是,当我单击操作栏中的“后退”按钮时,它会返回到上一个活动

即使我更改了getActivity().onBackPressed();在backpressed的else语句中,我不工作


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

对不起,我有点懒,我忘了我在FragmantActivity中选择了一个OnOptions项目,后退按钮是android.R.id.home everwhere,所以我在那里放了一个if语句,瞧。

但当我点击操作栏上的后退按钮时,它会返回到上一个活动。-这应该是默认行为。你认为会发生什么?onbackpressed的else语句,因此请替换碎片Nevermind我找到了解决方案:)