概述
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();
}
}
欢迎指正