2012-03-30 91 views
0

問題:我有說4個活動A,B,C和D.onActivityResult(...)沒有得到所謂的

A - 電話 - >乙 - 電話 - 「ç

使用startActivityForResult(...,...)完成新的活動調用

現在我的問題是,如果我簡單地調用完成活動C,然後onActivityResult(...)按預期調用。但我想完成C和startActivity(D,...);

//我從C調用finish()的代碼。

public void onSettingsClick(View v) { 
    System.out.println("My Parent ====== "+getParent()); 
    if (getParent() == null) { 
     setResult(Activity.RESULT_CANCELED, new Intent()); 
    } else { 
     getParent().setResult(Activity.RESULT_CANCELED,new Intent()); 
    } 
    finish(); 
    StartActivityUtil.launchSettings(this);// call to Activity D is done here 
} 

Plz幫助我,嘗試了不同的溶膠。但沒有運氣:(

而且我總是得到的getParent()= NULL

回答

1

你需要進行,完成和startActivity是異步方法,意味着調用這些方法,並不表示完成將立即被調用,然後控制將去到startActivity,這些命令將被添加到隊列中,並作爲系統將啓動活動D,而不會將結果返回給父活動,以擺脫這種情況,fi首先完成你的活動C,並在onActivityResult B開始活動D根據條件

+0

嗨,嘗試你的解決方案。 – 2012-03-31 06:30:49

+0

這工作:),我篩選了從C到A的StartActivity代碼,並且一切正常。非常感謝:) – 2012-03-31 07:43:07

+1

您的問題得到解決,這很重要,歡迎您 – jeet 2012-03-31 07:46:24

1

你必須startActivityForResult(d),並完成下在onActivityResult(和optionnaly結果從d轉移到C)

+0

嗨,這將保持我的問題,因爲它,我有其他活動說E將被稱爲從活動D,在那種情況下A,B,C不會完成 – 2012-03-31 04:55:35

0
public void onSettingsClick(View v) { 
    System.out.println("My Parent ====== "+getParent()); 
    if (getParent() == null) { 
     setResult(Activity.RESULT_CANCELED, new Intent()); 
    } else { 
     getParent().setResult(Activity.RESULT_CANCELED,new Intent()); 
    } 

    // just toggle these 2 lines. is it works? 
    StartActivityUtil.launchSettings(this);// call to Activity D is done here 
    finish(); 
} 
+0

嗨,嘗試通過切換,但沒有工作:(。 – 2012-03-31 04:53:45