最近在做專案的過程中有需要用到返回值,但是由於需求比較複雜,感覺把setresult放到onstop中比較方便,但是發現在onstop中寫入setresult(。。。)和finish()之後,跟本就不會回傳值,後來又試了onpaulse和ondestroy均是不可以。
後來發現是因為錯過了onactivityresult的呼叫時機,
拿b返結果給a作示例:
b—onpause
a—onactivityresult
a—onrestart
a—onstart
a—onresume
b—onstop
b—ondestroy
從上面過程可以看出,首先是b處於pause 狀態,然後等待a執行 onrestart——> onstart ——〉onresume,然後才是b 的onsstop——>onsdestroy,而a的 onactivityresult() 需要在b的onpause之後,a的onrestart之前這中間呼叫,所以b中的setresult()函式應該放在b的onstop之前呼叫。
另外我試驗了一下,如果把setresult()放在 b 的 onpause() 裡面呼叫,結果仍然是無效的。
那麼setresult()應該在什麼時候呼叫呢?從原始碼可以看出,activity返回result是在被finish的時候,也就是說呼叫setresult()方法必須在finish()之前。所以在onpause、onstop、ondestroy方法中呼叫setresult()也有可能不會返回成功,因為這些方法呼叫不一定是在finish之前的,當然在oncreate()就呼叫setresult肯定是在finish之前的,但是又不滿足業務需要。
//以下是我測試是否可以返回result示例**,結果顯示,放到這三個位置都是不可以的。
private void goback(int i)
@override
protected void onpause()
@override
protected void onstop()
@override
protected void ondestroy()
android 中layout weight的作用
layout weight 用於給乙個線性布局中的諸多檢視的重要度賦值。所有的檢視都有乙個layout weight值,預設為零,意思是需要顯示多大的檢視就佔據多大的螢幕空 間。若賦乙個高於零的值,則將父檢視中的可 用空間分割,分割大小具體取決於每乙個檢視layout weight 值以及該值在當前...
Android中LayoutParams的用法
寧願做過了後悔,也不要錯過了後悔。本講內容 layoutparams的用法 一 layoutparams的認識 從官方文件可知layoutparams繼承於android.view.viewgroup.layoutparams.layoutparams相當於乙個layout的資訊包,它封裝了layo...
android中layout weight的理解
例如 xmlns android android layout width fill parent android layout height wrap content android background 00ff00 android weightsum 0 android orientation...