2

我有一个ActionBar活动。在这个活动中,我已经实现了Android API的导航抽屉。需要ActionBar,导航抽屉和背部堆栈的建议

导航抽屉的一个选项是在列表中设置一个带有一些元素的ListFragment。

当我点击一些元素时,我想创建一个新的片段并将之前的ListFragment设置为堆栈。另外我想通过单击ActionBar home按钮来销毁这个新的片段,以便返回到前面的ListFragment。

我的问题来了:当我点击操作栏的home按钮时,显示抽屉布局,而不是销毁碎片......我该怎么办?

我也已覆盖onOptionsItemSelected方法在片段:

@Override 
    public boolean onOptionsItemSelected(MenuItem menuItem) { 
     switch (menuItem.getItemId()) { 
      case android.R.id.home: 
       getFragmentManager() 
         .popBackStack(); 
     } 
     return (super.onOptionsItemSelected(menuItem)); 

    } 

而且我已经充气的新片段时设定ListFragment到返回堆栈:

getFragmentManager() 
       .beginTransaction() 
       .setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right) 
       .replace(R.id.activity_main_fragment_container, fragment) 
       .addToBackStack(null) 
       .commit(); 
+0

你在使用'ActionBarDrawerToggle'吗? –

+0

@ana 01是的,当然 – BamsBamx

回答

1

那么,作为文档说here,popBackStack ()是异步的。我想你会打电话给super.onOptionsItemSelected(menuItem)来显示抽屉布局。

我建议你回true你自己处理这个选择所有的情况下(在这种特定情况:case android.R.id.home:),并调用getActivity().onBackPressed()(假设按硬件后退按钮的最后一个片段被删除,因为它应该),而不是直接弹出堆栈。我已经实现了一个类似的解决方案,它适用于我。