2016-09-24 24 views
0

所以我得到了2个国家:一个menu-state和一个play-state我如何设置Android后台按钮(Java)?

如果我在play-state并单击了android back-button,那么它将退出应用程序。但我想让back-button将我变回menu state

我该如何设置? OnBackPressed不工作,因为我没有Activity

相反,我试图将其设置这样的play-state

@Override 
public void handleInput() { 
     if (Gdx.input.isKeyPressed(Input.Keys.BACK)){ 
      gsm.set(new MenuState(gsm)); 
     } 
} 

它还挺工作,但不是我想要的方式。所以,如果我现在点击back-button,那么它会转到menu-state,但有点在Play-StateMenu-State之间循环,然后退出应用程序。但是当我持有back-button,并让它像3秒后,然后我在K,它留在那里,就像我想要的。

handleInput()也一直在更新。

我希望你们能够帮助我,因为这对我来说非常重要,我试图修复它几个小时。

我会尽快回答问题。

谢谢。

+1

请问您是否可以说明您的意思是没有活动?你在建什么样的Android应用程序? – Ewald

+0

堆栈的国家兄弟 – Chribo

回答

0

Android活动存储在活动堆栈中。如果你想要去的一个活动回来,你可以使用这样的事情:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
} 

这将结束当前的活动,让你回到你的最后activiy。

但是,如果您已经完成了最后一次活动,那么您需要重新开始。至极意味着你需要把它这种方式:

Intent first_intent = new Intent(getApplication(), First_Activity.class); 
      startActivity(first_intent); 
0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Logic you want here 
     return true; 
    } else { 
     return super.onKeyDown(keyCode, event); 
    } 
} 

您是否尝试过实施onKeyDown?它可能是Activity超类的一部分,你提到你没有使用Activity - 你在用什么?

+0

堆栈的状态,我试图重写公共布尔onKeyDown它不知何故没有工作,我认为它只适用于活动 – Chribo