在Android 開發中 常常會有這麼一個需求,ide
ActivityA 打開 ActivityB ,當 關閉 ActivityB時候須要傳遞一些數據到ActivityA 中;開發
固然實心思路有不少種,其中系統提供的比較簡單的方法就是 startActivityForResult 與 onActivityResult 的結合使用get
看到ForResult 與 Result 故明思議知道了一部分it
startActivityForResult 與 onActivityResult 的時候須要配合Intent 來使用io
startActivityForResult(Intent intent, int requestCode) 參數 一 須要開啓的意圖,也就是所須要打開的Activity
參數二,requestCode 是一個int 值的請求碼 主要用於標記區分
onActivityResult(int requestCode, int resultCode, Intent data)
int requestCode 也就是 startActivityForResult 方法中的 requestCode
int resultCode 就是 返回碼 ActivityB返回的區分狀態,
Intent data 就是 返回數據 ActivityB返回的數據
知道了這些參數的具體意思後 就能夠開始寫代碼了 具體看下面
======================================================================
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
Intent intent;
Button one, two;
final int MYACTIVITYCODE =1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intent = new Intent();
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 這裏是開啓一個意圖跳轉
intent.setClass(getApplication(), OneActvity.class);
startActivityForResult(intent,MYACTIVITYCODE );
}
});
two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
// 結束意圖返回的結果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("requestCode ==="+requestCode+"resultCode=="+resultCode+"data==="+data.getStringExtra("TO"));
}
}
================================下面是ActivityB=========================================
public class OneActvity extends Activity { Intent intent; Button one; final int RESULTCODE =2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.one); intent =new Intent(); one = (Button) findViewById(R.id.one); one.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** * 經過意圖返回數據, * setResult(int resultCode, Intent data) * int resultCode 返回結果碼 * Intent data 返回的數據 */ intent.putExtra("TO", "TONEXT"); setResult(RESULTCODE,intent); finish(); } }); }}=======================================打印出來結果=============================System.out﹕ requestCode ===1 resultCode==2 data===TONEXTPS Android 中許多地方都用到 startActivityForResult 與 onActivityResult 你們多大致會