Кнопка «Назад» в Android зависает при использовании метода onkeydown или переопределения onbackbuttonpressed

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);
    }
    }
}

Есть два вида деятельности Main--Sub2. Когда вы нажимаете кнопку в Main, вы можете перейти к Sub2. Этот код находится в Sub2. Я хочу использовать кнопку «Назад» внизу, чтобы MainActivity помещалась в верхнюю часть стека, не убивая Sub2.

Когда я запускаю его на телефоне, сначала все работает нормально, но после еще нескольких раз возврата в Sub2 и повторного перехода в Sub2 кнопка «Назад» перестает работать.

Я не знаю, что заставляет кнопку «Назад» зависать .. есть идеи?

ps) я пробовал использовать обработчики внутри метода и переопределять onBackButtonPressed() вместо использования onKeyDown.. но никакой разницы..


person Jeff    schedule 30.06.2014    source источник
comment
можешь выложить лог кота?   -  person reidisaki    schedule 30.06.2014


Ответы (1)


Не знаю, почему ваша кнопка зависает. Было бы полезно посмотреть, что вы делаете в основной деятельности. Вот пример, который у меня работает и не зависает:

Вы можете поместить это в основное действие:

@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);
}
person swbandit    schedule 01.07.2014