首页 文章

如何处理活动中的后退按钮

提问于
浏览
119

如何处理活动中的后退按钮 . 我有一些按钮 . 如果我单击其中一个按钮,它将重定向到我需要的按钮 . 它工作正常,但当我按下后退按钮它完成 .

如何解决这个问题呢 . 所有这些按钮只有一个活动 . 提前致谢 .

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

我已经使用上面的代码处理后退按钮,但它无法正常工作 . 当我按下后退按钮时,它会自动敲击 .

7 回答

  • 9

    一种更简单的方法是捕获Back按钮并调用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方法,而these recommendations则介绍了如何处理Back按钮

  • 9

    你应该使用:

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

  • 0

    你可以像这样处理它:

    for API level 5 and greater

    @Override
    public void onBackPressed() {
        // your code.
    }
    

    older than API 5

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // your code
            return true;
        }
    
        return super.onKeyDown(keyCode, event);
    }
    
  • 294

    除了以上我个人推荐

    onKeyUp():
    

    Programatically Speaking 当用户按下键时,用户最初按下一个键时会激活.2652346_重复按钮 . *

    所有开发平台都是如此 .

    Google开发建议,如果您在视图中拦截BACK按钮,则应在keydown上使用starttracking跟踪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);
    }
    
  • 15

    对于硬件设备后退按钮和软主页(后退)按钮,例如“< - ”这对我有用 . (*注意我在活动中有一个应用栏/工具栏)

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

    干杯!

  • 11

    这对我有帮助..

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

    我希望这会对你有帮助.. :)

  • 1

    这是一种简单的做事方式 .

    @Override
            public void onBackPressed() {
                // do what you want to do when the "back" button is pressed.
                startActivity(new Intent(Activity.this, MainActivity.class));
                finish();
            }
    

    我认为可能会有更复杂的方法,但我喜欢简单 . 例如,我使用上面的模板让用户退出应用程序,然后返回到我选择的另一个活动 .

相关问题