链接动作模式

时间:2017-04-24 16:40:30

标签: android

在我的活动中,我有一个定义如下的动作模式。

@Override
public void onShowPlace(final String placeId, final String placeName) {
    Log.i("PLACE", placeId);

    actionModeFeedByLocation = startSupportActionMode(new ActionMode.Callback(){
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.setTitle(placeName);
            om.slideHorizontal(R.id.overlay_nf_bylocation_fragment_container,
                    NewsfeedFragment.newInstance(om), TAG_NFBYLOCATION_FRAGMENT);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            Log.i("DESTROY_ACTIONMODE", "TEST");
            om.back();
        }
    });
}

这会在叠加片段中呈现单个地点的新闻源 从这个Feed中,我想通过创建另一个动作模式在第二个叠加层中显示细节:

@Override
public void onShowUser(final User user) {
    actionModeUserProfile = startSupportActionMode(new ActionMode.Callback(){
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            mode.setTitle(user.getFbName());
            om.slideHorizontal(R.id.overlay_nf_userprofile_fragment_container,
                    UserProfileFragment.newInstance(user.getFbId(), user.getFbName(), user.getGender()), TAG_USERPROFILE_FRAGMENT);
            Log.i("ACTION_MODE", String.valueOf(actionModeFeedByLocation == actionModeUserProfile));

            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            om.back();
        }
    });

}

不幸的是,这不起作用;对用户细节的调用破坏了第一个动作模式。

我使用动作模式来保持一致的“后退”行为 如图所示,这是我需要在视觉上实现的目标:

enter image description here

重要的是要注意:

  • 这些片段显示为叠加在一起(除非在它们上面调用“back”,否则不应该销毁它,所以我在活动xml中为每个创建了容器)
  • “主页”(第一个)屏幕已将工具栏设置为SupportActionBar

我需要的是后退按钮(在标题+设备按钮中)在每个叠加层上表现一致,并在以后正确删除。

1 个答案:

答案 0 :(得分:0)

我通过覆盖onBackPressedonOptionsItemSelected解决了这个问题,并通过上述回调中的自定义代码手动同步工具栏标题/管理片段backstack。