知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
startActivityForResult用法詳解
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):60
一、如不雅想在Activity中獲得新打開(kāi)Activity 封閉后返回的數(shù)據(jù),須要應(yīng)用體系供給的startActivityForResult(Intent intent, int requestCode)辦法打開(kāi)新的Activity,新的Activity 封閉后會(huì)向前面的Activity傳回?cái)?shù)據(jù),為了獲得傳回的數(shù)據(jù),必須在前面的Activity中重寫onActivityResult(int requestCode, int resultCode, Intent data)辦法。
[img]http://common.cnblogs.com/images/copycode.gif
package com.ljq.activitys; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private final static String TAG="MainActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnOpen=(Button)this.findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //獲得新打開(kāi)Activity封閉后返回的數(shù)據(jù) //第二個(gè)參數(shù)為請(qǐng)求碼,可以根據(jù)營(yíng)業(yè)需求本身編號(hào) startActivityForResult(new Intent(MainActivity.this, OtherActivity.class), 1); } }); } /** * 為了獲得傳回的數(shù)據(jù),必須在前面的Activity中(指MainActivity類)重寫onActivityResult辦法 * * requestCode 請(qǐng)求碼,即調(diào)用startActivityForResult()傳遞以前的值 * resultCode 結(jié)不雅碼,結(jié)不雅碼用于標(biāo)識(shí)返回?cái)?shù)據(jù)來(lái)自哪個(gè)新Activity */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String result = data.getExtras().getString("result");//獲得新Activity 封閉后返回的數(shù)據(jù) Log.i(TAG, result); } }
[img]http://common.cnblogs.com/images/copycode.gif
當(dāng)新Activity封閉后,新Activity返回的數(shù)據(jù)經(jīng)由過(guò)程Intent進(jìn)行傳遞,android平臺(tái)會(huì)調(diào)用前面Activity 的onActivityResult()辦法,把存放了返回?cái)?shù)據(jù)的Intent作為第三個(gè)輸入?yún)?shù)傳入,在onActivityResult()辦法中應(yīng)用第三個(gè)輸入?yún)?shù)可以掏出新Activity返回的數(shù)據(jù)。
二、應(yīng)用startActivityForResult(Intent intent, int requestCode)辦法打開(kāi)新的Activity,新Activity封閉前須要向前面的Activity返回?cái)?shù)據(jù)須要應(yīng)用體系供給的setResult(int resultCode, Intent data)辦法實(shí)現(xiàn):
[img]http://common.cnblogs.com/images/copycode.gif
package com.ljq.activitys; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class OtherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.other); Button btnClose=(Button)findViewById(R.id.btnClose); btnClose.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { //數(shù)據(jù)是應(yīng)用Intent返回 Intent intent = new Intent(); //把返回?cái)?shù)據(jù)存入Intent intent.putExtra("result", "My name is linjiqin"); //設(shè)置返回?cái)?shù)據(jù) OtherActivity.this.setResult(RESULT_OK, intent); //封閉Activity OtherActivity.this.finish(); } }); } }
[img]http://common.cnblogs.com/images/copycode.gif
setResult()辦法的第一個(gè)參數(shù)值可以根據(jù)營(yíng)業(yè)須要本身定義,膳綾擎代碼中應(yīng)用到的RESULT_OK是體系A(chǔ)ctivity類定義的一個(gè)常量,值為-1,代碼片段如下:
public class android.app.Activity extends ......{
public static final int RESULT_CANCELED = 0;
public static final int RESULT_OK = -1;
public static final int RESULT_FIRST_USER = 1;
}
運(yùn)行結(jié)不雅
[img]http://pic002.cnblogs.com/images/2011/270324/2011060315103017.png [img]http://pic002.cnblogs.com/images/2011/270324/2011060315103953.png
解釋:當(dāng)點(diǎn)擊“打開(kāi)新的Activity”按鈕,會(huì)跳轉(zhuǎn)到“我是新打開(kāi)的Activity”頁(yè)面;
當(dāng)點(diǎn)擊“封閉”按鈕,封閉當(dāng)前頁(yè)面,同時(shí)跳轉(zhuǎn)到“我是舊的Activity”頁(yè)面,且會(huì)傳遞result參數(shù)給前一個(gè)Activity
請(qǐng)求碼的感化
應(yīng)用startActivityForResult(Intent intent, int requestCode)辦法打開(kāi)新的Activity,我們須要為startActivityForResult()辦法傳入一個(gè)請(qǐng)求碼(第二個(gè)參數(shù))。請(qǐng)求碼的值是根據(jù)營(yíng)業(yè)須要由自已設(shè)定,用于標(biāo)識(shí)請(qǐng)求來(lái)源。例如:一個(gè)Activity有兩個(gè)按鈕,點(diǎn)擊這兩個(gè)按鈕都邑打開(kāi)同一個(gè)Activity,不管是那個(gè)按鈕打開(kāi)新Activity,當(dāng)這個(gè)新Activity封閉后,體系都邑調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)辦法。在onActivityResult()辦法如不雅須要知道新Activity是由那個(gè)按鈕打開(kāi)的,并且要做出響應(yīng)的營(yíng)業(yè)處理,這時(shí)可以如許做:
@Override public void onCreate(Bundle savedInstanceState) {
....
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1);
}
});
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2);
}
});
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
//來(lái)自按鈕1的請(qǐng)求,作響應(yīng)營(yíng)業(yè)處理
case 2:
//來(lái)自按鈕2的請(qǐng)求,作響應(yīng)營(yíng)業(yè)處理
}
}
}
結(jié)不雅碼的感化
在一個(gè)Activity中,可能會(huì)應(yīng)用startActivityForResult()辦法打開(kāi)多個(gè)不合的Activity處理不合的營(yíng)業(yè),當(dāng)這些新Activity封閉后,體系都邑調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)辦法。為了知道返回的數(shù)據(jù)來(lái)自于哪個(gè)新Activity,在onActivityResult()辦法中可以如許做(ResultActivity和NewActivity為要打開(kāi)的新Activity):
public class ResultActivity extends Activity {
.....
ResultActivity.this.setResult(1, intent);
ResultActivity.this.finish();
}
public class NewActivity extends Activity {
......
NewActivity.this.setResult(2, intent);
NewActivity.this.finish();
}
public class MainActivity extends Activity { // 在該Activity會(huì)打開(kāi)ResultActivity和NewActivity
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(resultCode){
case 1:
// ResultActivity的返回?cái)?shù)據(jù)
case 2:
// NewActivity的返回?cái)?shù)據(jù)
}
}
}
相關(guān)案例查看更多
相關(guān)閱讀
- 百度推廣
- 網(wǎng)站建設(shè)首選
- 軟件定制公司
- 汽車報(bào)廢管理系統(tǒng)
- 昆明網(wǎng)站設(shè)計(jì)
- 北京小程序開(kāi)發(fā)
- 云南網(wǎng)站開(kāi)發(fā)
- 報(bào)廢車回收管理系統(tǒng)
- 汽車報(bào)廢回收管理軟件
- 海南小程序制作公司
- 昆明小程序設(shè)計(jì)
- 云南網(wǎng)站建設(shè)快速優(yōu)化
- 云南網(wǎng)站建設(shè)百度
- 公眾號(hào)模板消息
- 大理網(wǎng)站建設(shè)公司
- 搜索排名
- 云南小程序被騙蔣軍
- 云南小程序開(kāi)發(fā)報(bào)價(jià)
- typescript
- 云南小程序開(kāi)發(fā)推薦
- 汽車報(bào)廢管理
- 正規(guī)網(wǎng)站建設(shè)公司
- 網(wǎng)站建設(shè)哪家強(qiáng)
- 昆明小程序定制開(kāi)發(fā)
- 網(wǎng)站建設(shè)優(yōu)化
- 網(wǎng)絡(luò)營(yíng)銷
- 云南省建設(shè)廳官方網(wǎng)站
- 云南建設(shè)廳網(wǎng)站
- 昆明軟件公司
- 汽車報(bào)廢軟件