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