【问题标题】:Failure delivering result ResultInfo{who=null, request=42, result=0, data=null} to activity将结果 ResultInfo{who=null, request=42, result=0, data=null} 传递给活动失败
【发布时间】:2016-11-24 12:06:39
【问题描述】:

请帮忙!当我运行我的程序时,当我进入第二个活动时一切正常,但是当我回到第一个活动时,它会出现错误。以下是完整的错误信息:

              Process: com.example.android.lifeofcrime, PID: 2826
              java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=42, result=0, data=null} to activity {com.example.android.lifeofcrime/com.example.android.lifeofcrime.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference
                  at android.app.ActivityThread.deliverResults(ActivityThread.java:4053)
                  at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096)
                  at android.app.ActivityThread.-wrap20(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference
                  at com.example.android.lifeofcrime.MainActivity.onActivityResult(MainActivity.java:63)
                  at android.app.Activity.dispatchActivityResult(Activity.java:6917)
                  at android.app.ActivityThread.deliverResults(ActivityThread.java:4049)
                  at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) 
                  at android.app.ActivityThread.-wrap20(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6077) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

这是第一个活动的代码:

public class MainActivity extends AppCompatActivity {
int test = 5;
TextView money;
int testReturn2 = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    money = (TextView) findViewById (R.id.money);
    setupWorkButton();

}

public void setupWorkButton() {
    Button workButton = (Button) findViewById(R.id.workButton);
    workButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, workScreen.class);
            intent.putExtra("testing", test);
            startActivityForResult(intent, 42);
        }
    });
}

// Gets called when the activity started finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-Generate method stub
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 42:
            testReturn2 = data.getIntExtra("the answer", 0);
            money.setText("" + testReturn2);
            break;


    }
}


}

这是第二个活动的代码:

public class workScreen extends AppCompatActivity {
int test;
int testReturn = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_work_screen);
    Intent intent = getIntent();
    test = intent.getIntExtra("testing", 0);
    TextView displayTest = (TextView) findViewById(R.id.intView);
    displayTest.setText("" + test);
    setupCharacterButton();


}
public void setupCharacterButton() {
    Button characterButton = (Button) findViewById(R.id.characterButton);
    characterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent();
            testReturn = test * 2;
            intent.putExtra("the answer", testReturn);
            finish();
        }
    });
}
}

【问题讨论】:

    标签: java android


    【解决方案1】:

    您的意图 == null。好像您忘记在第二个活动中设置活动结果:

    setResult(Activity.RESULT_OK, intent);
    

    在完成第二个活动之前输入此代码

    【讨论】:

    • 我在 "setResult(" 之后放什么活动
    • 哪个活动?我没有得到你的问题,没有活动可以放在那里,唯一的参数是结果代码和意图
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多