2012-12-28 39 views
0

我想回到后退栈中的最后一个片段,所以我想让后退按钮回弹栈。我应该这样做吗?如果是这样,我应该重写onBackPressed()或onKeyDown()?如果android后退按钮被覆盖

@Override 
     public void onBackPressed() 
      { 
      Intent intent = new Intent(this,ABC.class); 
      startActivity(intent); 
      } 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

我的碎片没有被添加到后退堆栈正确出于某种原因

我用这来试去回以前的片段,但顺序表演奇怪。我该做什么才能使订单正确?

@Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft){ 
     if(teamsFrag !=null) 
     { 

      if(manage.getBackStackEntryCount() > 0) 
       manage.popBackStack(manage.getBackStackEntryAt(manage.getBackStackEntryCount()-1).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 

      //ft.detach(dataFrag); 
     } 

回答

2

简答题?

长答案?如果你不得不问,

你应该使用片段管理器设置你的片段,以便后退按钮做你想要的。你不应该重写后退按钮,而不是正确地实现你的堆栈。

+0

那么我应该如何设置它们以便在碎片中循环? – rasen58

+0

@ rasen58你为什么想要用BACK按钮循环片段,这从用户的角度来看似乎很不令人满意。 – fhucho

+0

@fhucho不会更直观,碎片位于不同的标签中,所以不要按下标签,而只是想按下后退按钮。其实现在我想到了,你是对的,我不需要它。但是当应用程序启动时,他们会点击一个标签,删除之前所有的标签,并在操作栏中显示3个新标签,所以我认为按下后退按钮可以更直观地回到上一个操作酒吧布局。 – rasen58

0

我想返回到后面堆栈中的最后一个片段,所以我想让后退按钮弹出堆栈。

这是您在使用FragmentTransaction#addToBackStack()添加FragmentManager时使用FragmentManager的默认行为。