将DrawerLayout与Fragments一起使用并启动导航工作

时间:2014-08-05 18:35:42

标签: android android-fragments android-actionbar navigation-drawer

我使用DrawerLayout作为浏览应用各种屏幕的方式。我在抽屉里有几个不同的物品,如:

  • 新闻
  • 照片
  • 活动
  • 菜单

其中每一个都是Fragment(主要是ListFragment),然后您可以通过点击列表中的一行来更深入地导航到另一个Fragment。例如,查看照片库列表,然后点击其中一个,它将显示照片。

我可以点击抽屉图标或从左侧滑动以显示抽屉并选择任何选项,它将正确显示Fragment。但是,当我进入更深层片段(转到照片然后点击图库以查看照片列表)时,抽屉图标不会更改为后退图标并允许用户导航回上一个Fragment。我可以点击硬件后退按钮,它会返回,但不是按钮。

MainActivity我有:

getActionBar().setDisplayHomeAsUpEnabled(true);

Photos中,当点击代表我的画廊的行时:

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        PUCObjects.PUCPhotoGalleryItem item = items.get(position);

        FragmentTransaction ft = getFragmentManager().beginTransaction();
        //ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

        PUCPhotosGridFragment newFragment = new PUCPhotosGridFragment();
        newFragment.galleryId = item.assetId;

        ft.add(R.id.container_frame, newFragment, ""+position);
        ft.addToBackStack(null);

        // Start the animated transition.
        ft.commit();

    }//end

});

然后当它加载列表中的照片列表Fragment,在`onActivityCreated()中:

// Show loading view
MainActivity main = (MainActivity)getActivity();
main.showLoadingActivity(true);

// Show the back button
main.getActionBar().setDisplayHomeAsUpEnabled(true);

当我处于更深的Fragments时,如何启动导航工作并显示后退按钮?我错过了什么才能让我回到堆栈?

0 个答案:

没有答案