为什么我的活动没有执行我重写的后退按钮事件?

时间:2010-11-04 11:57:38

标签: android layout android-activity

我想把我的活动发回给一个人。我来解释一下 我正在使用具有4个选项卡的Main活动,每个选项卡都有自己的活动。每项活动都包含更多活动。 当我点击第一个标签中的第一个活动时,问题就开始了。下一个活动是独立的。我创建了下一个活动的意图。在这种情况下,要防止在该新活动中绘制我的标签栏布局。我使用现有的活动布局,删除其中的所有视图。然后我把新活动放进去。

e.g ..         contentViewLayout.removeAllViews();         View view = activityManager.startActivity(id,intent).getDecorView();         contentViewLayout.addView(view,contentViewLayoutParams);

完成了。但按下设备BACK按钮时会出现问题。因为新活动是从现有活动开始的。因此,当按下后退按钮时,它将主要活动和应用程序关闭。我想在这种情况下这样做,“新活动”应该终止,现有活动必须重新开始。然后,如果再次按下BACK按钮,则应终止主要活动。 我重写onKeyDown()向下方法如下,但它。剂量不能正常工作?

在我的新活动中。

public boolean onKeyDown(int keyCode,KeyEvent event){

    if(keyCode == KeyEvent.KEYCODE_BACK){

            childActivity = null;
            contentViewLayout.removeAllViews();
                            mainActivity = new Intent(this,MainActivity.class);
                            View view = activityManager.startActivity(id, intent).getDecorView();
                             contentViewLayout.addView(view, contentViewLayoutParams);
            return false;
    }else{
        return super.onKeyDown(keyCode, event);
    }
}

但它始终是应用程序而不是关闭子活动

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我明白了! 实际上,重点活动是主要活动......而不是新活动。所以我们所要做的就是专注于我们的新活动。因此,在新活动的onCreate()方法中,我把重点放在新活动中的任何一个组件上,例如..

button.setFocusable(真); button.requestFocus();

所以在这种情况下新的活动onKeyDownButtonWorks

  

块引用

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ){
                            //My code goes here.
            return true;
    }
    return super.onKeyDown(keyCode, event);
}