我有两个应用程序A和B,这两个应用程序都是我自己制作的,但是它们在不同的程序包中。我想从活动B提取一些数据到活动A。
为此,我使用ActivityA.startactivityforresult(ActivityB)
。
这样做正常,直到需要从ActivityB检索数据,然后开始为我的getExtra()调用获取NullpointerExceptions。
活动A:
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"));
}
活动B:
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
我是在做错什么,还是根本不允许这样做?
更新
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"));
最佳答案
我没有尝试过在其他应用程序中使用活动,但是活动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>