在我的活动中,我有一个定义如下的动作模式。
@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();
}
});
}
不幸的是,这不起作用;对用户细节的调用破坏了第一个动作模式。
我使用动作模式来保持一致的“后退”行为 如图所示,这是我需要在视觉上实现的目标:
重要的是要注意:
我需要的是后退按钮(在标题+设备按钮中)在每个叠加层上表现一致,并在以后正确删除。
答案 0 :(得分:0)
我通过覆盖onBackPressed
和onOptionsItemSelected
解决了这个问题,并通过上述回调中的自定义代码手动同步工具栏标题/管理片段backstack。