我的問題是,當我點擊一個操作欄項onOptionsItemSelected被調用,但不工作。與sherlockactionbar在碎片導航不起作用
我只想要後退按鈕的工作。 這裏是我的代碼,這是在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準備是真的,當我們有兩種窗格模式,所以在使用平板電腦時,或者如果我們在第一個片段(所以第二個是空的)。
如果我按後退按鈕一切正常,片段被替換。 但是當我點擊操作欄中的後退按鈕時,它只會回到以前的活動。
即使我chage getActivity()。onBackPressed(); onBackPressed's else聲明我不工作。
有誰知道最新的解決方案,我做錯了什麼?
*但是,當我點擊操作欄中的後退按鈕時,它只會回到以前的活動。* - 這應該是默認行爲。你認爲應該發生什麼? – Luksprog 2013-03-09 10:59:50
onbackpressed的else語句,所以替換片段 – executioner 2013-03-09 11:07:43
Nevermind我找到了解決方案:) – executioner 2013-03-09 11:27:05