Android 链式动作模式

Android 链式动作模式,android,Android,在我的活动中,我有一个动作模式定义如下 @Override public void onShowPlace(final String placeId, final String placeName) { Log.i("PLACE", placeId); actionModeFeedByLocation = startSupportActionMode(new ActionMode.Callback(){ @Override public bool

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

@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();
        }
    });
}
这将呈现覆盖片段中单个位置的新闻提要。
从这个提要中,我想通过创建另一个动作模式,在第二个叠加中显示细节:

@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();
        }
    });

}
不幸的是,这不起作用;对用户详细信息的调用将破坏第一个操作模式

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

需要注意的是:

  • 这些片段以重叠的形式出现(除非对它们调用“back”,否则不应销毁,因此我在活动xml中为每个片段创建了容器)
  • “主页”(第一个)屏幕为SupportActionBar设置了工具栏

我需要的是后退按钮(在页眉+设备按钮中)在每个覆盖层上保持一致,并在以后正确删除每个覆盖层

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

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