Как управлять кнопкой возврата в действии

Как обращаться с кнопкой "Назад" в действии. Где у меня есть кнопки. Если я нажму на одну из кнопок, она будет перенаправлена ​​на нужные мне кнопки. Он работает нормально, но когда я нажимаю кнопку "Назад", он заканчивается.

Как решить эту проблему. У меня есть только одно действие для всех этих кнопок. Спасибо заранее.

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
   {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) 
        {
            return false; //I have tried here true also
        }
        return super.onKeyDown(keyCode, event);
   }

Я использовал выше код для обработки кнопки возврата, но не работает. Когда я нажимаю кнопку "назад", она сама ударяет туда.

Ответ 1

Вы можете справиться с этим следующим образом:

для уровня API 5 и выше

@Override
public void onBackPressed() {
    // your code.
}

старше API 5

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // your code
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

Ответ 2

В дополнение к вышесказанному я лично рекомендую

onKeyUp():

Программный диалог будет срабатывать, когда пользователь нажимает клавишу , но нажата клавиша , а повторяется, когда пользователь удерживает нажатой клавишу. *

Это остается верным для всех платформ разработки.

Google-разработчик предположил, что если вы перехватываете кнопку BACK в представлении, вы должны отслеживать KeyEvent с starttracking при keydown, а затем вызывать с помощью keyup.

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        event.startTracking();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
            && !event.isCanceled()) {
        // *** Your Code ***
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

Ответ 3

Более простой подход - захватить кнопку "Назад" и вызвать moveTaskToBack (true) следующим образом:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Android 2.0 представил новый метод onBackPressed и эти рекомендации о том, как обращаться с кнопкой "Назад"

Ответ 4

Вы должны использовать:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
            && keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        // Take care of calling this method on earlier versions of
        // the platform where it doesn't exist.
        onBackPressed();
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // This will be called either automatically for you on 2.0
    // or later, or by the code above on earlier versions of the
    // platform.
    return;
}

Как определено здесь: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Если вы используете более старую версию для компиляции кода, замените android.os.Build.VERSION_CODES.ECLAIR на 5 (вы можете добавить частный int с именем ECLAIR, например)

Ответ 5

Для кнопки возврата аппаратного устройства и мягкой домашней (обратной) кнопки, например. "&" - "это то, что работает для меня. (* Примечание. У меня есть панель приложений/панель инструментов в действии)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            //finish();
            onBackPressed();
            break;
    }
    return true;
}



@Override
public void onBackPressed() {
   //Execute your code here
   finish();

}

Ура!

Ответ 6

Это помогло мне..

@Override
public void onBackPressed() {
    startActivity(new Intent(currentActivity.this, LastActivity.class));
    finish();
}

ИЛИ?????  даже вы можете использовать это для переключения курсора также

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
        startActivity(new Intent(currentActivity.this, LastActivity.class));
    finish();

}

Надеюсь, это вам поможет..:)