【发布时间】:2016-04-18 16:05:20
【问题描述】:
我有一个加载片段 onCreate 的活动。我在那个活动上有一个工具栏,它有一个按钮,单击该按钮时会在第一个创建的片段之上添加一个新片段。
现在在该工具栏上,单击时,我想删除较新的片段,以便它仅替换底部的片段(较旧的片段)。我已经搜索过了,除了一件事之外,我有点想通了。
我这样做是为了让它尝试查看是否按下了工具栏按钮:
@Override
public boolean onKeyUp(int keyCode, KeyEvent objEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, objEvent);
}
@Override
public void onBackPressed() {
FragmentManager mFM = getSupportFragmentManager();
if(mFM.findFragmentByTag("NewFragment") != null){
mFM.beginTransaction().remove(mFM.findFragmentByTag("NewFragment")).commit();
}
}
问题是,当你点击“硬件的后退按钮”而不是工具栏的后退按钮时,“keyCode”只等于KEYCODE_BACK。它给我的是键码 58 而不是 4 (KEYCODE_BACK)。
【问题讨论】:
-
为什么不添加
or语句与keycode 58.. 类似if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.XY)...
标签: android android-fragments fragmentmanager