0

我的問題是,當我點擊一個操作欄項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聲明我不工作。

有誰知道最新的解決方案,我做錯了什麼?

+0

*但是,當我點擊操作欄中的後退按鈕時,它只會回到以前的活動。* - 這應該是默認行爲。你認爲應該發生什麼? – Luksprog 2013-03-09 10:59:50

+0

onbackpressed的else語句,所以替換片段 – executioner 2013-03-09 11:07:43

+0

Nevermind我找到了解決方案:) – executioner 2013-03-09 11:27:05

回答

0

對不起,我有點懶,我忘了我在我的FragmantActivity中有一個onOptionsItemSelected,後面的按鈕是android.R.id.home,所以我在那裏放了一條if語句。