使用onkeydown方法或覆盖onbackbuttonpressed时,Android后退按钮会冻结

时间:2014-06-30 18:12:05

标签: java android button override onkeydown

public boolean onKeyDown(int keyCode, KeyEvent event){

    if (isSub2&&keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(ctxx, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);

        isReturning = true;

        return false;
    }
    else {
    return super.onKeyDown(keyCode, event);
    }
    }
}

主要有两个活动 - Sub2。 当您按下Main中的按钮时,您可以转到Sub2。 此代码位于Sub2中。我想使用底部的后退按钮使MainActivity放在堆栈顶部而不会杀死Sub2。

当我在手机上运行它时,它可以正常工作, 但经过几次回到Sub2并再次前往Sub2之后 后退按钮停止工作。

我不知道是什么让后退按钮冻结..任何想法?

ps)我尝试在方法中使用处理程序并覆盖onBackButtonPressed()而不是使用onKeyDown .. 但没有任何区别......

1 个答案:

答案 0 :(得分:0)

不确定为什么你的按钮冻结了。看看你在主要活动中做了什么会很有帮助。这是一个适合我并且不冻结的例子:

您可以将其放在主要活动中:

@Override
protected void onStart() {
    super.onStart();
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SubActivity.class);
            //****** Uncomment the following line if you want to re-use the subactivity instead of launching a new one
            //intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);

        }
    });
}

这是在子活动中:

@Override
public void onBackPressed() {
    //super.onBackPressed();
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(intent);
}