日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

startActivityForResult()

發布時間:2025/6/15 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 startActivityForResult() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當子模塊的事情做完之后就回到主界面,還同時返回一些子模塊完成的數據交給主Activity處理。 用startActivity啟動主界面是一個新的Intent實例,而訪問的主界面還在activity棧的下面沒有調出來,這樣做的一個最大的問題是,回不到原界面就不能多個子功能模塊共同來給主界面提供數據或服務了。 目的: A.java 是主界面,B.java 是子功能模塊,要從A啟動B,B干完活之后把結果匯報給A 先看 A.java 的相關代碼 //--?A.java?--// //啟動B Intent bintent = new Intent(A.this, B.class); //設置 bintent的Bundle的一個值 String bsay = "Hello, this is B speaking";? bintent.putExtra("listenB", bsay) startActivityForResult(bintent,0); // 參數(Intent intent, Int requestCode) 的 requestCode 對應下面回收Bundle時識別用的 //重寫onActivityResult()來處理返回的數據,建議先看B.java 的代碼再回來看這里比較好理解 //這理有三個參數 requestCode, resultCode, data protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { //resultCode為回傳的標記,我在B中回傳的是RESULT_OK case RESULT_OK: Bundle b=data.getExtras(); ?//data為B中回傳的Intent String str=b.getString("ListenB");//str即為回傳的值"Hello, this is B speaking" break; default: break; } } ------------------------------------------------------------------------------------- //-- B.java?--// // 用?setResut() 準備好要回傳的數據后,只要使用finish()的方法就能把打包好的數據發給A且運行onActivityResult()部分的代碼 Intent aintent =?new Intent(B.this, A.class); setResut(RESULT_OK,aintent); //這理有2個參數(int resultCode, Intent intent) ... ... finish(); startActivityForResult(Intent intent, Int requestCode) intent 傳給B,requestCode >=0,隨便用于在onActivityResult()區別哪個子模塊回傳的數據,如果還有C.java ,D甚至E子模塊的話,每個區分開不同的requestCode就好。 setResut(int resultCode, Intent intent) resultCode 如果B子模塊可能有幾種不同的結果返回,可以用這個參數予以識別區分。這里還有個特殊的 RESULT_OK 值,沒有特殊情況用它就好。 onActivityResult(int requestCode, int resultCode, Intent intent) 這里三個都不用解釋了,與上文對應的東西。如果不對requestCode和resultCode 加以識別區分的話,只要有其他activity setResult到了A ?onActivityResult()會無差別處理。 // ************************************************************************************************************ /

首先看結構 這個結構由三部分組成:

startActivityForResult

onActivityResult()

setResult()

這個三個函數構成

具體的參數就不寫了 應該能知道。

注意的是調用setResult之后必須調用finish()不然的話 是不會跳轉的

調用setResult的時候直接調用即將回跳的函數的

onActivityResult() 然后在調用該函數的onrestart onstart onresume? 如果你在每個setResult后下finish方法 那么該activity直接調用destory方法。

第一個activity

?public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main);
??????? Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
??????? Button bt=(Button)findViewById(R.id.bt);
??????? bt.setOnClickListener(new OnClickListener(){

???@Override
???public void onClick(View v) {
????// TODO Auto-generated method stub
????Intent intent=new Intent(StartForResultTest.this,StartForResultTest1.class);
????startActivityForResult(intent, 0);
???}});
??? }

???
???
??? @Override
??? protected void onActivityResult(int requestCode, int resultCode, Intent data) {
??? ?// TODO Auto-generated method stub
??? ?super.onActivityResult(requestCode, resultCode, data);
??? ?Log.v("startforrequest", "onActivityResult: "+requestCode+" : "+resultCode);
??? }

?

第二個activity

? public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main1);
??????? Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
??????? Button bt=(Button)findViewById(R.id.bt);
??????? bt.setOnClickListener(new OnClickListener(){

???@Override
???public void onClick(View v) {
????// TODO Auto-generated method stub
????Intent intent=new Intent(StartForResultTest1.this,StartForResultTest2.class);
????startActivityForResult(intent, 1);
???}});
??? }

???
???
??? @Override
??? protected void onActivityResult(int requestCode, int resultCode, Intent data) {
??? ?// TODO Auto-generated method stub
??? ?super.onActivityResult(requestCode, resultCode, data);
??? ?Intent intent=new Intent(this,StartForResultTest.class);
??? ?setResult(1, intent);
??? ?finish();
??? ?Log.v("startforrequest", "onActivityResult: "+requestCode+" : "+resultCode);
??? }

?

第三個也就是最后一個activity

? public void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main2);
??????? Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
??????? Button bt=(Button)findViewById(R.id.bt);
??????? bt.setOnClickListener(new OnClickListener(){

???@Override
???public void onClick(View v) {
????// TODO Auto-generated method stub
????Intent intent=new Intent(StartForResultTest2.this,StartForResultTest1.class);
????? ?setResult(2, intent);
????? ?finish();
???}});
??? }

那么當跳轉到最后一個的時候 回直接調回第一個activity 調用restart start resume方法之后

再destory 最后一個 倒數第二個..

/

?

startActivityForResult Demo

startActivityForResult(Itent intent, int requestCode)用來喚起一個Activity。利用這個方法,前一個Activity1便會有一個等待次Activity2的返回,返回時響應onActivityResult(int requestCode, int resultCode, Intent data)方法。
? Demo如下:
? 第一個activity
?

Java代碼 ?
  • package?com.kevin.intent; ??
  • ??
  • import?android.app.Activity; ??
  • import?android.content.Intent; ??
  • import?android.os.Bundle; ??
  • import?android.view.View; ??
  • import?android.view.View.OnClickListener; ??
  • import?android.widget.Button; ??
  • import?android.widget.EditText; ??
  • ??
  • public?class?Main?extends?Activity?implements?OnClickListener{ ??
  • ????private?Button?btn_transfer; ??
  • ????private?EditText?et_name; ??
  • ????private?int?requestCode?=?1; ??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{ ??
  • ????????super.onCreate(savedInstanceState); ??
  • ????????setContentView(R.layout.main); ??
  • ????????btn_transfer?=?(Button)?findViewById(R.id.button1); ??
  • ????????et_name?=?(EditText)?findViewById(R.id.editText1); ??
  • ????????btn_transfer.setOnClickListener(this); ??
  • ????} ??
  • ??
  • ????@Override??
  • ????protected?void?onActivityResult(int?requestCode,?int?resultCode,?Intent?data)?{ ??
  • ????????System.out.println("requestCode--->"?+?requestCode); ??
  • ????????//?resultCode是第二個Activity返回過來的值 ??
  • ????????switch?(resultCode)?{ ??
  • ????????case?RESULT_OK: ??
  • ????????????//?獲取Bundle對象 ??
  • ????????????Bundle?returnedBundle?=?data.getExtras(); ??
  • ????????????String?returnedName?=?returnedBundle.getString("name"); ??
  • ????????????et_name.setText(returnedName); ??
  • ????????????break; ??
  • ??
  • ????????default: ??
  • ????????????break; ??
  • ????????} ??
  • ????} ??
  • ??
  • ????@Override??
  • ????public?void?onClick(View?v)?{ ??
  • ????????//?取得et_name的值 ??
  • ????????String?name?=?et_name.getText().toString(); ??
  • ????????Bundle?bundle?=?new?Bundle(); ??
  • ????????bundle.putString("name",?name); ??
  • ????????Intent?intent?=?new?Intent(); ??
  • ????????intent.setClass(this,?Activity_1.class); ??
  • ????????intent.putExtras(bundle);??????? ??
  • ????????//?啟動Activity_1 ??
  • ????????startActivityForResult(intent,?requestCode); ??
  • ????} ??
  • ???? ??
  • }??
  • package com.kevin.intent;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;public class Main extends Activity implements OnClickListener{private Button btn_transfer;private EditText et_name;private int requestCode = 1;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn_transfer = (Button) findViewById(R.id.button1);et_name = (EditText) findViewById(R.id.editText1);btn_transfer.setOnClickListener(this);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {System.out.println("requestCode--->" + requestCode);// resultCode是第二個Activity返回過來的值switch (resultCode) {case RESULT_OK:// 獲取Bundle對象Bundle returnedBundle = data.getExtras();String returnedName = returnedBundle.getString("name");et_name.setText(returnedName);break;default:break;}}@Overridepublic void onClick(View v) {// 取得et_name的值String name = et_name.getText().toString();Bundle bundle = new Bundle();bundle.putString("name", name);Intent intent = new Intent();intent.setClass(this, Activity_1.class);intent.putExtras(bundle); // 啟動Activity_1startActivityForResult(intent, requestCode);}}


    ? 跳轉后的activity

    Java代碼 ?
  • package?com.kevin.intent; ??
  • ??
  • import?android.app.Activity; ??
  • import?android.content.Intent; ??
  • import?android.os.Bundle; ??
  • import?android.view.View; ??
  • import?android.view.View.OnClickListener; ??
  • import?android.widget.Button; ??
  • import?android.widget.TextView; ??
  • ??
  • public?class?Activity_1?extends?Activity?implements?OnClickListener{ ??
  • ????private?Button?btn_return; ??
  • ????private?TextView?textView; ??
  • ????private?Intent?intent; ??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{ ??
  • ????????super.onCreate(savedInstanceState); ??
  • ????????setContentView(R.layout.activity1); ??
  • ????????intent?=?this.getIntent(); ??
  • ????????Bundle?bundle?=?intent.getExtras(); ??
  • ????????String?name?=?bundle.getString("name"); ??
  • ????????System.out.println("name?---?>"?+?name); ??
  • ????????textView?=?(TextView)?findViewById(R.id.tv_receivedname); ??
  • ??
  • ????????textView.setText("傳過來的name值為:?"?+?name); ??
  • ???????? ??
  • ????????btn_return?=?(Button)?findViewById(R.id.btn_return); ??
  • ????????btn_return.setOnClickListener(this); ??
  • ????} ??
  • ????@Override??
  • ????public?void?onClick(View?v)?{ ??
  • ????????//?點擊返回按鈕后,設置返回值 ??
  • ????????setResult(RESULT_OK,?intent); ??
  • ????????this.finish(); ??
  • ????} ??
  • }??
  • package com.kevin.intent;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;public class Activity_1 extends Activity implements OnClickListener{private Button btn_return;private TextView textView;private Intent intent;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity1);intent = this.getIntent();Bundle bundle = intent.getExtras();String name = bundle.getString("name");System.out.println("name --- >" + name);textView = (TextView) findViewById(R.id.tv_receivedname);textView.setText("傳過來的name值為: " + name);btn_return = (Button) findViewById(R.id.btn_return);btn_return.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 點擊返回按鈕后,設置返回值setResult(RESULT_OK, intent);this.finish();} }
    • IntentDemo3.zip (45.2 KB)

    ?

    總結

    以上是生活随笔為你收集整理的startActivityForResult()的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产91清纯白嫩初高中在线观看 | 性猛交xxxx乱大交孕妇印度 | 国产精品精品国产 | 九七影院在线观看免费观看电视 | 国产精品自拍网站 | 十大污网站 | 亚洲第一第二区 | 久久国产精彩视频 | 女女互慰吃奶互揉调教捆绑 | 韩国bj大尺度vip福利网站 | 中文字幕av有码 | 中文字幕一区二区久久人妻 | 农村妇女av | 菊肠扩张playh| 日韩国产精品视频 | 欧美在线观看视频一区 | 国产又粗又长又爽 | 你懂的亚洲 | 国产一区二区不卡视频 | 99视频免费在线观看 | 精品成人网 | 日韩最新av | 国产91视频在线观看 | 亚州一级| 又欲又污又肉又黄短文 | 国产成人在线视频播放 | xxx毛片 | 香蕉视频成人在线 | 91成人福利在线 | 国产毛片久久久久 | 污视频免费在线 | 亚洲一级网站 | 国产精品成人国产乱一区 | 男人的天堂在线视频 | 每日更新av | 王者后宫yin肉h文催眠 | 新av在线 | 免费看美女被靠到爽的视频 | 强伦人妻一区二区三区 | 网站一级片 | 亚洲人成色777777老人头 | 欧美亚韩一区二区三区 | 国内自拍一区 | 久久一区精品 | 奇米影视第四色首页 | 久久成人国产精品入口 | 在线视频免费观看一区 | 在线免费观看视频网站 | 欧美国产一区二区 | 欧美无砖专区免费 | 免费久久精品 | 夜夜cao | 国产9区 | 欧美极品在线 | 久久精品久久久久久 | 极品粉嫩国产18尤物 | av网站免费在线 | 影音先锋中文字幕在线视频 | √天堂资源地址在线官网 | 久久综合桃花网 | 日韩一区二区三区免费 | 亚洲 欧美 日韩 国产综合 在线 | 欧美成人免费高清视频 | 手机成人av | xxx69美国 | 国产三级av片| 日韩 欧美 中文 | 老熟妇高潮一区二区高清视频 | 国产成人精品综合在线观看 | 老熟妇一区二区三区 | 重口另类 | 超级变态重口av番号 | 医生强烈淫药h调教小说视频 | 国产综合视频一区 | 一区小视频 | 一区久久久 | 欧美偷拍视频 | 日本综合久久 | 污网站在线播放 | 欧美精品一区二区三区在线播放 | 亚洲一页| 爱露出 | 国产日韩欧美精品在线 | 亚洲大片在线观看 | 最近2018年手机中文字幕版 | 俄罗斯毛片 | 欧洲天堂网 | 你懂的在线观看网站 | 日韩精品电影一区二区 | 中文字幕在线播放第一页 | 免费看美女隐私网站 | 日本黄色网址大全 | 国产二区在线播放 | 中出在线播放 | 国产精品19乱码一区二区三区 | 久久传媒 | 欧美一卡二卡在线观看 | 在线免费观看 | 波多野结衣视频在线 |