爲什麼要使用ActivityForResult
當A頁面跳轉到B頁面,在B頁面進行一些修改操作,返回A頁面的時候,A頁面要更新在B頁面更改的數據.
使用 startActivity();已經完全不能滿足我們的需求了,所以startActivityForResult();這個方法就幫助我們解決類似的需求問題
startActivityForResult(Intent, int) A頁面
第一個參數:跟startActivity()的參數一樣,沒有特別要介紹的
第二個參數:請求碼Int類型的數字,大於0即可沒什麼特別的要求
setResult(int, Intent) B頁面
第一個參數:返回碼也是Int類型的,大於0即可,(個人建議請求碼返回碼不要相同)
第二個參數:依然是大家耳熟能詳的Intent,使用Intent爲了攜帶數據爲A頁面
onActivityForResult(int, int, Intent) A頁面
第一個參數:請求碼
第二個參數:返回碼
第三個參數:攜帶返回數據的Intent
看一下效果 別在意那些細節
實現代碼
A頁面
private void initData() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("text1",et_text1.getText().toString());
intent.putExtra("text2",et_text2.getText().toString());
intent.setClass(MainActivity.this,NumberActivity.class);
startActivityForResult(intent,100);
}
});
}
B頁面
private void initData() {
tv_text1.setText(text1);
tv_text2.setText(text2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = et_k.getText().toString();
Intent intent = new Intent();
intent.putExtra("s",s);
setResult(200,intent);
finish();
}
});
最後回到A頁面 展示數據
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode ==100&&resultCode==200){
String s = data.getStringExtra("s");
tv_text.setText(s);
}
}
Demo地址
http://download.csdn.net/detail/macaopark/9914948