重写onBackPressed()

概述

onBackPressed()是用户点击Back键时系统调用的方法,用于从当前Activity返回到上一个Activity。在代码中调用此方法也会起到“按”Back键的效果。可以重写此方法以达到自定义目的。

onBackPressed()的原定义

onBackPressed()方法在Activity.java中定义:

public void onBackPressed() {
    ...
    //the last statement in original defination
    finishAfterTransition();
}

 查看onBackPressed()方法的定义内容,可以看到在所有代码的最后,onBackPressed()方法调用了finishAfterTransition()方法,finishAfterTransition()finish()的作用区别在于,使用finishAfterTransition()来结束Activity,在页面跳转时会有过渡动画。然而在使用finishAfterTransition()之前如果不定义过渡动画,它的作用就与finish()没有区别。

onBackPressed()的重写

 在onBackPressed()方法的重写内容中,一定要在最后调用结束Activity的方法,最常用的就是finish(),否则,由于重写内容覆盖了原定义内容,系统再调用此方法时就不会产生Back动作。通俗的讲就是用户按Back键不起作用。

@Override
public void onBackPressed() {
    ...
    //must call a method to end Activity behind all statement
    finish();  
}

 或者

@Override
public void onBackPressed() {
    ...
    //must call a method to end Activity behind all statement
    super.onBackPressed();
}

 在内容的最后使用super.onBackPressed()调用原定义。

重写onBackPressed()的完整代码

MainActivity.java

public class MainActivity extends Activity
                       implements View.OnClickListener {
                       
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //load activity_main.xml
        setContentView(R.layout.activity_main);
        
        Button btn_1=(Button)findviewById(R.id.btn_1);
        btn_1.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
    
    @Override
    public void onBackPressed() {
        Intent intent=new Intent();
        intent.putExtra("hello","HelloWorld");
        //return data from current Activity
        setResult(0,intent);
        super.onBackPressed();
    }
}

欢迎指正
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值