Android startActivityForResult 與 onActivityResult

在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  你們多大致會
相關文章
相關標籤/搜索