HOME键,没有返回预期的效果。。帮忙查看原因!!!

shenxiaolinil 2009-12-03 03:00:39
实现目标:同一个activity之中,根据事件处理,用不同的layout来替换!想在HOME键时,返回的是上一layout的显示结果。可以第一次按下home的时候,没有反应,第二下次就可以的,第三次也可以的了!不知为何第一次不行???管理这些layout,我用的是堆栈的处理过程。。。
代码如下?:::
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键
ViewGroup view = null;
if (keyCode == KeyEvent.KEYCODE_BACK) {

if (stack.size() == 1) {
android.os.Process.killProcess(android.os.Process.myPid());
} else {
view = stack.popDisplay();
setContentView(view);
}
}
return false;
}
...全文
198 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondma 2009-12-27
  • 打赏
  • 举报
回复
你的VIEW都进了STACK了吗?
kvguo 2009-12-27
  • 打赏
  • 举报
回复
你的view是不是LayoutInflater生成的。还有,我不明白你这样做的意义是什么。
漩涡 2009-12-13
  • 打赏
  • 举报
回复
那个
楼上的
你不会也不要这样吧。。。

顺便探讨下
是不是
进了else?
nj_dobetter 2009-12-06
  • 打赏
  • 举报
回复
stack在哪里初始化和变化的?可能stack size不对造成的。
搂主的设计精妙,多个界面,一个activity,性能应该不错
danfeng 2009-12-05
  • 打赏
  • 举报
回复
if (stack.size() == 1) {
android.os.Process.killProcess(android.os.Process.myPid());
} else {
view = stack.popDisplay();
setContentView(view);
}

你这里不是有个判断吗? 你确定第一次按back建走到 else的流程里了?

shenxiaolinil 2009-12-03
  • 打赏
  • 举报
回复
纠正错误::是BACK 键。。。。。
shenxiaolinil 2009-12-03
  • 打赏
  • 举报
回复
我把代码改成:
if (keyCode == KeyEvent.KEYCODE_BACK) {
setContentView(layout);//堆栈中的一个具体的layout
return false;
}

这样按下HOME键,马上界面就切换显示。。。这应该是正常现象,但是上面的代码。。。第一次按下HOME取到的layout,却为何没有即时更新,而在第二次去更新了呢?

80,476

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧