Отключить функцию по умолчанию кнопки «Назад» для Android

Я пробовал СТОЛЬКО методов, чтобы ПРЕДОТВРАТИТЬ функцию кнопки «Назад» по умолчанию в Android, но безуспешно.

Это один из кодов, которые я использовал без успеха:

stage.addEventListener(KeyboardEvent.KEY_UP, optionsKey, false, 0, true);

function optionsKey(ke: KeyboardEvent): void {
    if (ke.keyCode == Keyboard.BACK) {
        ke.preventDefault();
        ke.stopImmediatePropagation();
        //Do my own code below...
    }
}

Я использую Flash Cs6, Air 3.2 для Android, тестирую его на LG Google nexus 4.

Когда я использую флэш-симулятор, он работает нормально! Означает кнопку «Назад», позволяющую приложению вернуться к предыдущему шагу (как я и ожидал)

Но после того, как я публикую apk (соотношение сторон: авто, автоматическая ориентация, режим рендеринга: графический процессор), как только я нажимаю НАЗАД, мое приложение сворачивается!

(означает, что когда я нажимаю кнопку «Назад» на своем телефоне, приложение сворачивается вниз (не закрывается!). Когда я повторно активирую его / нажимаю на него, я вижу, что приложение фактически перешло на один шаг НАЗАД (как я запрограммировал и ожидал) , но я просто НЕ МОГУ ОСТАНОВИТЬ действие по умолчанию MINIMIZING / De-activation моего приложения после нажатия кнопки «Назад».

У кого-нибудь есть файл "Fla", который я могу увидеть в ДЕЙСТВИИ, пожалуйста?!

Потому что я использовал много-много кодов и пока безуспешно

спасибо и с нетерпением жду любой помощи...


person Ali Pouradam    schedule 12.08.2013    source источник


Ответы (6)


Вы не можете использовать этот простой код?

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
}
person Ankur Aggarwal    schedule 12.08.2013
comment
Если вы не хотите возвращаться к нажатию клавиши «Назад», просто закомментируйте строку [code]super.onBackPressed();[/code] - person Ankur Aggarwal; 12.08.2013

На самом деле клавиша возврата Android по умолчанию работает с двумя функциями. один с клавишей ВВЕРХ, а другой с клавишей ВНИЗ

поэтому, чтобы отключить команды по умолчанию для кнопки «Назад» и добавить свои собственные, мы должны написать такой код.

хорошо, если мы удалим/отключим функцию нажатия клавиши по умолчанию и будем работать только с функцией KEY Up, поэтому для удаления/отключения мы добавимEventListener Keyboardevent.KEY_DOWN в собственное приложение и просто отключим эту функцию с помощью event.preventDefault(); затем мы снова добавимEventListener Keyboardevent.KEY_UP в собственное приложение и просто отключим эту функцию с помощью event.preventDefault(); а затем добавить к нему наши собственные команды! вы можете сделать это наоборот ... но это предпочтительнее, потому что если клавиша нажата, счетчик вниз может быть больше одного и может соответствующим образом повлиять на ваши команды.

NativeApplication.nativeApplication.addEventListener( KeyboardEvent.KEY_DOWN, android_backDown );

NativeApplication.nativeApplication.addEventListener( KeyboardEvent.KEY_UP, android_backUp );


function android_backDown(e:KeyboardEvent)
{
        switch (e.keyCode)
       {
        case Keyboard.BACK :
        e.preventDefault();
        break;
       }
}


function android_backUp(e:KeyboardEvent)
{
  switch (e.keyCode)
  {
    case Keyboard.BACK :
    e.preventDefault();
    // YOUR CODE
    break;
  }
}
person Ravi Kumar Soni    schedule 25.10.2013

NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true)

function onKeyDown(event:KeyboardEvent):void
{
if( event.keyCode == Keyboard.BACK )
{
event.preventDefault();
event.stopImmediatePropagation();
//handle the button press here. 
   }
}

Обратите внимание: если вы установили stage.displayState = FULL_SCREEN, никакие события клавиатуры не отправляются в ваше приложение! Вместо этого используйте stage.displayState = FULL_SCREEN_INTERACTIVE!

person Panoman    schedule 13.07.2015

Переопределить onBackPressed()

 @Override
public void onBackPressed() {
  //keep it blank
}

Реализация по умолчанию просто завершает текущую активность, но вы можете переопределить это, чтобы делать все, что хотите.

person Tarun Varshney    schedule 12.08.2013
comment
Большое спасибо. могу я спросить, где я должен разместить этот код? Это код AS3 для Flash Cs6?! Когда я помещаю его туда, он не распознает ни @Override, ни onBackPressed(). Не могли бы вы объяснить?? Спасибо и извините, если мой вопрос глупый. - person Ali Pouradam; 12.08.2013
comment
В боковом классе активности, где бы вы ни находились (поместите его там, где onCreate() закрыт). - person Tarun Varshney; 12.08.2013

Вы можете отключить функцию кнопки «Назад». Удалив следующий вызов метода следующим образом:

@Override
public void onBackPressed() {

    System.out.println("back pressed");
    if(isValid) {
        // This super.onBackPressed() performs the default back button function
        super.onBackPressed();
    } else {
        Toast.makeText(SpO2TestActivity.this, "You can't close this screen", Toast.LENGTH_SHORT).show();
    }
}
person RajeshVijayakumar    schedule 17.09.2014

person    schedule
comment
Пожалуйста, объясните код и добавьте форматирование, используя ` или пробел. - person rajuGT; 20.10.2015