如何处理活动中的后退button

如何处理活动中的后退button。 我在哪里有一些button。 如果我点击其中一个button,它将redirect到我需要的button。 它工作正常,但当我按回button它完成。

如何解决这个问题呢。 我只有一个活动的所有这些button。 提前致谢。

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

我用上面的代码来处理返回button,但它不工作。 当我按下它的button时,它本身。

你可以这样处理:

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

除了上面我个人build议

 onKeyUp(): 

以编程方式说明 当用户最初按下某个键时,keydown将会触发,但当用户保持按键不动时, 它将重复。 *

所有的开发平台都是如此。

谷歌开发build议,如果你在视图中拦截BACKbutton,你应该在keydown上跟踪KeyEvent,然后用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); } 

一个更简单的方法是捕获后退button按下并调用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方法,而这些build议就如何处理Backbutton

你应该使用:

 @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.ECLAIRreplace为5(例如,您可以添加一个名为ECLAIR的私有int)

对于硬件设备后退button和软家庭(后退)button,例如“< – ”这是对我有用。 (*注意我在活动中有一个应用程序栏/工具栏)

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

干杯!

这帮助了我..

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

我希望这会帮助你.. 🙂