如何在单击主页按钮时使用片段提供正确的后退导航

时间:2014-07-23 15:43:25

标签: android android-fragments android-actionbar

我想在单击Actionbar的Home按钮时提供返回导航。  在主机片段中

((MainActivity)this.getActivity()).fragment_Actualités=new Fragment_Actualités();
         fragmentTransaction.replace(R.id.content_frame,((MainActivity)this.getActivity()).fragment_Actualités);
         fragmentTransaction.addToBackStack(null);
         fragmentTransaction.commit();
        ((MainActivity)this.getActivity()).fragmentManager.executePendingTransactions();
        ((MainActivity)this.getActivity()).supportInvalidateOptionsMenu();

在主持人活动中

  public boolean onOptionsItemSelected(MenuItem item) {
    // The action bar home/up action should open or close the drawer.
    // ActionBarDrawerToggle will take care of this.
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle action buttons
    int id=0;
    if(id==item.getItemId()){
         if(id== R.id.home)
        {
            this.onBackPressed();
            return true;}

        }

当我点击后退按钮时,super.OnBackPressed正常工作 我怎样才能使它有效?

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

尝试更改:

this.onBackPressed();

为:

onBackPressed();

并扩展FragmentActivity,如果你不这样做

答案 2 :(得分:0)

再次阅读你的代码我认为发现了这个问题,你将0分配给id,所以当你使用item.getItemId()时,总是返回false。试试这段代码

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == android.R.id.home) {
        this.onBackPressed();
        return true;
    }
}

答案 3 :(得分:0)

我终于解决了, 问题是,我有2个MenuItems,设置和Home One。 所以如果只写 R.id.Home 它就不会工作但是当改为 android.R.id.Home 时它会起作用! 使用相同的代码