如何处理活动中的后退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(); }
我希望这会帮助你.. 🙂
- 什么是BroadcastReceiver和什么时候使用它?
- Android方法“评价我的应用程序”
- 错误:在Android Studio中找不到名称为“default”的configuration
- 包括Google Play服务库时,为什么权限会自动添加到我的AndroidManifest中
- Android将视图保存为jpg或png
- GoogleSignatureVerifier签名无效的消息(谷歌播放服务9.0.0)
- 什么时候Application的onCreate()方法被调用?
- 无法parsing:com.google.firebase:firebase-core:9.0.0
- 我怎样才能以编程方式启动android应用程序信息屏幕?