Week04? ? 2016/10/06上午1-4節(jié)(國(guó)慶調(diào)課补履,周六補(bǔ)周四的課)
一导披、復(fù)習(xí)
1播瞳,新建一個(gè)project
2理肺,顯示intent:利用intent從一個(gè)Activity到另一個(gè)Activity
二糙置、顯示intent:利用intent從一個(gè)Activity到另一個(gè)Activity
Android進(jìn)階2之Activity之間數(shù)據(jù)交流(onActivityResult的用法) - 落日小屋 - 博客頻道 - CSDN.NET
在一個(gè)主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去)云茸,當(dāng)子模塊的事情做完之后就回到主界面,或許還同時(shí)返回一些子模塊完成的數(shù)據(jù)交給主Activity處理谤饭。這樣的數(shù)據(jù)交流就要用到回調(diào)函數(shù)onActivityResult查辩。
requestCode 和 resultCode都是返回提出請(qǐng)求的MainActivity結(jié)果處理函數(shù)onActivityResult()使用的標(biāo)識(shí)胖笛,其中requestCode 是我們?cè)趩?dòng)活動(dòng)時(shí)傳入的請(qǐng)求碼,用來(lái)標(biāo)識(shí)MainActivity跳轉(zhuǎn)的目的Activity宜岛,而resultCode則是在返回?cái)?shù)據(jù)時(shí)傳入的處理結(jié)果
Intent intent = new Intent(本窗體.this, 跳轉(zhuǎn)的目的窗體.class);
<1>startActivityForResult(Intent intent, int requestCode);
第一個(gè)參數(shù):一個(gè)Intent對(duì)象
第二個(gè)參數(shù):如果> = 0,當(dāng)Activity結(jié)束時(shí)requestCode將歸還在onActivityResult()中长踊。以便確定返回的數(shù)據(jù)是從哪個(gè)Activity中返回
代碼寫在舊窗體,在舊窗體里new 2個(gè)Intent(目的窗體是2個(gè)不同的新窗體)萍倡,requestCode用來(lái)區(qū)分是向哪個(gè)新窗體傳消息身弊,當(dāng)離開舊窗體切換到新窗體時(shí)消息顯示在新窗體中。新窗體通過(guò)Intent EarthIntent = getIntent();String EarthMessage = EarthIntent.getStringExtra("FromEarth");textView.setText(EarthMessage);3句把信息顯示在新窗體列敲。
<2>setResult(int resultCode, Intent data)
調(diào)用這個(gè)方法把Activity想要返回的數(shù)據(jù)返回到父Activity
第一個(gè)參數(shù):當(dāng)Activity結(jié)束時(shí)resultCode將歸還在onActivityResult()中阱佛,一般為RESULT_CANCELED , RESULT_OK。
第二個(gè)參數(shù):一個(gè)Intent對(duì)象戴而,返回給父Activity的數(shù)據(jù)凑术。
代碼寫在新窗體,在新窗體里new 1個(gè)Intent(目的窗體是舊窗體)所意,把返回信息存入Intent對(duì)象淮逊,setResult通過(guò)這個(gè)Intent對(duì)象把信息傳給舊窗體。
<3>onActivityResult(int requestCode, int resultCode, Intent data)
第一個(gè)參數(shù):這個(gè)整數(shù)requestCode提供給onActivityResult扶踊,是以便確認(rèn)返回的數(shù)據(jù)是從哪個(gè)Activity返回的泄鹏。
這個(gè)requestCode和startActivityForResult中的requestCode相對(duì)應(yīng)。
第二個(gè)參數(shù):這整數(shù)resultCode是由子Activity通過(guò)其setResult()方法返回秧耗。
第三個(gè)參數(shù):一個(gè)Intent對(duì)象备籽,帶有返回的數(shù)據(jù)。
總結(jié):舊窗體通過(guò)startActivityForResult(intent, requestCode)方法的requestCode來(lái)標(biāo)識(shí)信息(intent中)傳給2個(gè)不同的新窗體分井,信息在新窗體中顯示车猬;新窗體在自己的窗體類中用setResult(RESULT_OK, intent)方法把信息(intent中)傳回舊窗體,舊窗體怎么知道是哪個(gè)新窗體的信息哪尺锚?在回調(diào)函數(shù)onActivityResult(int requestCode, int resultCode, Intent data)中根據(jù)requestCode取不同的新窗體傳過(guò)來(lái)的信息進(jìn)行顯示珠闰。
三、其他參考
總結(jié):調(diào)用startActivityForResult缩麸,onActivityResult無(wú)響應(yīng)的問(wèn)題_雨點(diǎn)點(diǎn)_新浪博客