古詩詞大全網 - 成語用法 - android setresult是什麽作用

android setresult是什麽作用

android setResult 是用於返回數據給上壹個Activity的,也就是從新的Activity中返回數據給前壹個Activity

邏輯步驟:

1. startActivityForResult(Intent intent,int i); 啟動下壹個Activity要傳送到下壹個Activity的數據封裝到intent中,並規定下壹個Activity必須返回壹個值i;

2. 運行下壹個Activity,並返回int i;

3 onActivityResult(int requestCode,int ResultCode,Intent data) 返回的i值此處傳給requestCode,且只有當requestCode接受到的值是規定的i時此方法才能正確執行。

通俗理解:

startActivityForResult(Intent,int)啟動下壹個Activity且規定下壹個Activity應該返回壹個值; 下壹個Activity執行; 下壹個Activity執行完,返回的值是規定的值時onActivityResult方法才能正確執行。

下面來壹個例子:

主調函數通過下面的代碼調用Activity和發送數據:

// 用Bundle來綁定所要的數據 Bundle bd = new Bundle();

bd.putDouble("height", height); bd.putString("sex", sex);

// 創建壹個新的Intent,並將Bundle傳進去

Intent it = new Intent(); it.putExtras(bd);

it.setClass(ActivityDemo.this, Bundle2.class);

startActivityForResult(it, RESULT_OK);

主調函數通過onActivityResult回調傳回數據:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (resultCode) {

case RESULT_OK:

String sex = data.getStringExtra("sex");

if(sex.equals("M")){

rg.check(R.id.M);

}else {

rg.check(R.id.F);

}

break;

default:

break;

}

}

被調函數通過下面代碼返回數據:

intent=this.getIntent();

bunde = intent.getExtras();

String sex = bundle.getString("sex");

Double height = bundle.getDouble("height");

Bundle2.this.setResult(RESULT_OK,intent);

Bundle2.this.finish();