2012-04-18 65 views
0

我有兩個應用程序,A和B,這兩個應用程序都是由我製作的,但它們位於不同的包中。我想從我的活動B中提取一些數據到我的活動A.startactivityforresult()對外部活動?

對此,我使用ActivityA.startactivityforresult(ActivityB)

這工作正常,直到我需要從ActivityB中檢索我的數據,然後我開始爲我的getExtra()調用獲取NullpointerExceptions。

ActivityA:

protected void someMethod() 
{ 
    Intent intent = getPackageManager().getLaunchIntentForPackage("some.package.app"); 
    intent.putExtra("action", "retrieveData"); 
    startActivityForResult(intent, 7854); 
} 

protected void onActivityResult (int requestCode, int resultCode, Intent intent) 
{ 
    Log.d(TAG, "test: " + intent.getExtras().getString("test")); 
} 

ActivityB:

protected void onResume() 
{ 
    if (getIntent().getExtras() != null && getIntent().getExtras().getString("action").equals("retrieveData")) 
    { 
     Intent intent = getIntent(); 
     intent.putExtra("test", "This is a test response"); 

     setResult(7854, intent); 
     finish(); 
    } 
} 

OUTPUT: test: null

難道我做錯了什麼,或者這根本不允許的?

UPDATE

04-18 18:28:34.908: E/AndroidRuntime(15711): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=7854, result=0, data=null} to activity {dk.rasive.testA/dk.rasive.testA.TestActivity}: java.lang.NullPointerException 
04-18 18:32:48.892: E/AndroidRuntime(15801): at dk.rasive.testA.TestActivity.onActivityResult(TestActivity.java:245) 

245線包含此代碼

Log.d(TAG, "test: " + intent.getExtras().getString("test")); 

回答

1

我還沒有嘗試過的活動在不同的應用程序,但活動A需要重寫

onActivityResult(int requestCode, int resultCode, Intent data) 

而且

setResult 

需要一個ResultCode而不是一個RequestCode,雖然這不會影響你發佈的代碼片段。

編輯:

AndroidManifest.xml中

<activity 
     android:name="ActivityB" 
     <intent-filter> 
      <action android:name='retrieveData'/> 
     </intent-filter> 
    </activity> 
+0

我剛剛剝離出來的@Override註解readability's緣故。 – Rasive 2012-04-18 16:01:06

+0

活動必須重寫'onActivityResult'。我沒有提到任何關於你錯過@Override的事情。 – techiServices 2012-04-18 16:04:26

+0

阿哈我看到:)這部分解決了問題。現在我得到一個:'失敗的結果ResultInfo {誰=空,請求= 7854,結果= 0,數據=空}運行時異常雖然。 – Rasive 2012-04-18 16:15:45

相關問題