禁用Android的“后退”按钮的默认功能

时间:2013-08-12 09:03:59

标签: android actionscript-3 back flash-cs6

我尝试过多种方法来预防Android中Back按钮的默认功能,但没有成功

这是我用过的代码之一但没有成功:

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 for Android,在LG Google nexus 4上进行测试。

当我使用闪光灯模拟器时,它工作正常!表示后退按钮,让应用程序返回上一步(正如我所期望的那样)

但是在我发布apk(宽高比:自动,自动方向,渲染模式:GPU)后,只要按下BACK,它就会最小化我的应用程序!

(意味着当我按下手机上的“后退”按钮时,应用程序最小化(不关闭!)。当我重新激活它/点击它时,我看到应用程序实际上已经退了一步(因为我编程和预期),但我只是按下后退按钮后才能停止默认操作最小化/取消激活我的应用程序。

任何人都有“Fla”文件,我可以在ACTION中看到它吗?!

因为我使用了很多代码而没有成功

感谢并期待您的任何帮助...

6 个答案:

答案 0 :(得分:1)

你能不能使用这个简单的代码?

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
}

答案 1 :(得分:1)

实际上,android后退键默认使用两个函数。 一个是键UP,另一个是键DOWN

所以要禁用后退按钮的默认命令并添加我们自己的命令,我们必须编写这样的代码。

如果我们删除/禁用键默认键Down功能并且只能使用KEY Up功能,那就太好了 所以要删除/禁用我们将addEventListener Keyboardevent.KEY_DOWN添加到nativeapplication并简单地通过event.preventDefault()禁用该功能; 然后我们再将addEventListener Keyboardevent.KEY_UP添加到nativeapplication并简单地通过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;
  }
}

答案 2 :(得分:1)

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!

答案 3 :(得分:1)

 //Override onBackPressed    
 public void onBackPressed() {
    return; //Do nothing!
 }

答案 4 :(得分:0)

覆盖onBackPressed()

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

默认实现只是完成当前活动,但是   你可以覆盖它来做任何你想做的事。

答案 5 :(得分:0)

您可以禁用后退按钮功能。通过删除以下方法调用,如下所示:

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