大致步驟
: 1.啟動另外乙個activity,這裡稱子activity;
2.子activity通過setresult方法設定返回結果,setresult方法帶兩個引數:結果碼和表示為intent的負載值;
3.父activity通過onactivityresult方法處理子activity返回的結果
讓子activity有返回值
使用startactivity方式啟動的activity和它的父activity無關,當它關閉時也不會給父activity提供任何反饋。
你可以啟動乙個activity作為子activity,它與父activity有內在的聯絡。當子activity關閉時,它會觸發父 activity中的乙個事件處理函式。子activity最適合用在乙個activity為其它的activity提供資料(例如使用者從乙個列表中選擇 乙個專案)的場合。
子activity的建立和普通activity的建立相同,也必須在應用程式的manifest中註冊。任何在manifest中註冊的activity都可以用作子activity。
啟動子activity
startactivityforresult方法和startactivity方法工作很相似,但有乙個很重要的差異。intent都是用來決定啟動哪個activity,你還可以傳入乙個請求碼。這個值將在後面用來作為有返回值activity的唯一id。
下面的**顯示了如何啟動乙個子activity:
private
static
final
intshow_subactivity =
1;
intent intent = new
intent(
this
, myotheractivity.
class
);
startactivityforresult(intent, show_subactivity);
和正常的activity一樣,子activity可以隱式或顯式啟動。下面的框架**使用乙個隱式的intent來啟動乙個新的子activity來挑選乙個聯絡人:
private
static
final
intpick_contact_subactivity =
2;
uri uri = uri.parse(「content://contacts/people」);
intent intent = new
intent(intent.action_pick, uri);
startactivityforresult(intent, pick_contact_subactivity);
返回值當子activity準備關閉時,在finish之前呼叫setresult來給呼叫的activity返回乙個結果。
setresult方法帶兩個引數:結果碼和表示為intent的負載值。結果碼是執行子activity的結果,一般是 activity.result_ok或activity.result_canceled。在一些情況下,你會希望使用自己的響應代號來處理特定的應用 程式的選擇;setresult支援任何整數值。
作為結果返回的intent可以包含指向乙個內容(例如聯絡人,**號碼或**檔案)的uri和一組用來返回額外資訊的extra。
接下來的**片段節選自子activity的oncreate方法,顯示了怎樣向呼叫的activity返回不同的結果:
button okbutton = (button) findviewbyid(r.id.ok_button);
okbutton.setonclicklistener(new
view.onclicklistener()
});
button cancelbutton = (button) findviewbyid(r.id.cancel_button);
cancelbutton.setonclicklistener(new
view.onclicklistener()
});
處理子activity的結果
當子activity關閉時,它的父activity的onactivityresult事件處理函式被觸發。
重寫這個方法來處理從子activity返回的結果。onactivityresult處理器接受好幾個引數:
❑ 請求碼
曾經用來啟動子activity的請求碼。
❑ 結果碼
結果碼是由子activity設定的,用來顯示它的結果。它可以是任何整數值,但典型的值是activity.result_ok和activity.result_cancelled。
如果子activity非正常關閉或在關閉時沒有指定結果碼,結果碼都是activity.result_canceled。
❑ 資料
乙個intent來打包任何返回的資料。依賴於子activity的目的,它可能會包含乙個代表特殊的從列表中選擇的資料的uri。可變通的,或額外的,子activity可以使用「extras」機制以基礎值的方式返回臨時資訊。
下面的框架**實現了乙個activity中的onactivityresult事件處理函式:
private
static
final
intshow_sub_activity_one =
1;
private
static
final
intshow_sub_activity_two =
2;
@override
public
void
onactivityresult(
intrequestcode,
intresultcode, intent data)
break
; }
case
(show_sub_activity_two) :
break
; }
} }
啟動另外乙個Activity,並返回結果
color blue size large 大致步驟 size color 1.啟動另外乙個activity,這裡稱子activity 2.子activity通過setresult方法設定返回結果,setresult方法帶兩個引數 結果碼和表示為intent的負載值 3.父activity通過ona...
Android中啟動另外乙個Activity
啟動另外乙個 activity activity.startactivity 方法可以根據傳入的引數啟動另外乙個 activity intent intent new intent currentactivity.this,otheractivity.class startactivity inte...
在乙個程式中啟動另外乙個程式
最近剛剛開始工作,發現在學校學習的那些基本上知識打打基礎而已,在實際的專案運作中根本就沒用。革命尚未成功,通知仍需努力啊 嘿嘿 上正題 因為我們需要做乙個類似於監控的系統,這樣的話就涉及到多個程式需要同時執行,並且需要有乙個程式 去控制另外乙個程式,之前沒有做過,也沒見過,不過還好,有一同事之前做過...