Android 未能将数据发送回以前的目的

Android 未能将数据发送回以前的目的,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在使用onActivityResult从之前的意图中获取数据,它工作正常 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case (11): {

我正在使用onActivityResult从之前的意图中获取数据,它工作正常

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case (11): {
            newPosition = data.getIntExtra("position", 0);
            break;
        }
        }
    }

但是,当我使用操作栏返回按钮返回到之前的意图时,问题就出现了。它给出了以下错误:

01-10 15:33:34.128: E/AndroidRuntime(642): FATAL EXCEPTION: main
01-10 15:33:34.128: E/AndroidRuntime(642): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=0, data=null} to activity {com.cogneti/com.cogneti.ui.recall.TestActivity}: java.lang.NullPointerException
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2726)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:2769)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread.access$2000(ActivityThread.java:123)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1023)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.os.Looper.loop(Looper.java:126)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread.main(ActivityThread.java:3997)
01-10 15:33:34.128: E/AndroidRuntime(642):  at java.lang.reflect.Method.invokeNative(Native Method)
01-10 15:33:34.128: E/AndroidRuntime(642):  at java.lang.reflect.Method.invoke(Method.java:491)
01-10 15:33:34.128: E/AndroidRuntime(642):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
01-10 15:33:34.128: E/AndroidRuntime(642):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
01-10 15:33:34.128: E/AndroidRuntime(642):  at dalvik.system.NativeStart.main(Native Method)
01-10 15:33:34.128: E/AndroidRuntime(642): Caused by: java.lang.NullPointerException
01-10 15:33:34.128: E/AndroidRuntime(642):  at com.cogneti.ui.recall.TestActivity.onActivityResult(TestActivity.java:221)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.Activity.dispatchActivityResult(Activity.java:4483)
01-10 15:33:34.128: E/AndroidRuntime(642):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2722)
01-10 15:33:34.128: E/AndroidRuntime(642):  ... 11 more
当我使用默认的后退按钮时,它工作正常


我在onBackPressed()方法中设置了结果

用代码生成结果数据的函数

Intent resultIntent = new Intent();
resultIntent.putExtra("position", selectedPosition);
setResult(Activity.RESULT_OK, resultIntent);
并从上一个活动的
onStop()
onDestroy()
调用此函数

实际上,我认为当您从操作栏按Back时,不会调用
public void onBackPressed()
,因此您必须在活动的
onStop()
onDestroy()
中调用此代码

更新:

我想当你们按下动作条的时候,这个会被调用

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
    // Here write your set Result on Intent code..          
    finish();
    return true;
}
 return super.onOptionsItemSelected(item);
}

在之前的活动中,您将结果设置为意图的代码在哪里?等等,我正在编辑问题猜测您的数据为空。您确定使用intentbundle在以前的活动中设置了结果吗?是的,我在OnBackpress()方法中设置了它是按home按钮(在操作栏中)还是显式后退按钮?第一个按钮对我不起作用,我将尝试第二个
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
    // Here write your set Result on Intent code..          
    finish();
    return true;
}
 return super.onOptionsItemSelected(item);
}