println需要一条消息 - onActivityResult

时间:2014-02-10 00:29:24

标签: java android

我正在尝试将来自SecondActivity的消息发送到FirstActivity进行打印。我使用startActivityForResult(intent,requestcode)来启动SecondActivity,然后输入文本并使用onActivityResult()发送要由FirstActivity显示的输入文本。当我运行Activity并单击send时,我收到错误,指出“println需要一条消息”。结果没有传递给FirstActivity。

以下是代码: FirstActivity:

private void StartSecondActivity() {

    Log.i(tag, "SecondActivity");

    Intent iSecond = new Intent(this, SecondActivity.class);

    startActivityForResult(iSecond, REQUEST_CODE);

}

SecondActivity:

private void eClicked() {

    Log.i(tag, "Clicked()");
    String mes = mEditText.getText().toString();

    Intent intent = new Intent();
    intent.putExtra(EXTRA_MESSAGE, mes);

    setResult(RESULT_OK, intent);
    Log.i(tag, mes);

    finish();
}

此处记录正确的消息。

FirstActivity:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.i(tag, "onActivityResult()");
    if(requestCode == REQUEST_CODE ){
        if(resultCode == RESULT_OK){
            Intent inte = getIntent();
            String m = inte.getStringExtra(SecondActivity.EXTRA_MESSAGE);
            mTextView.setText(m);
        }
    }

}

它进入onActivityResult并记录消息,然后崩溃并显示以下错误消息。

错误讯息:

02-09 18:52:42.010: E/AndroidRuntime(1831): FATAL EXCEPTION: main
02-09 18:52:42.010: E/AndroidRuntime(1831): Process: droid.intentexp.intents, PID: 1831
02-09 18:52:42.010: E/AndroidRuntime(1831): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {droid.intentexp.intents/droid.intentexp.intents.FirstActivity}: java.lang.NullPointerException: println needs a message

我不确定出了什么问题。有人可以说清楚。

感谢。

2 个答案:

答案 0 :(得分:1)

您应该使用data意图 getIntent()

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.i(tag, "onActivityResult()");
    if (requestCode == REQUEST_CODE ) {
        if (resultCode == RESULT_OK) {
            String m = data.getStringExtra(SecondActivity.EXTRA_MESSAGE);
            mTextView.setText(m);
        }
    }
}

答案 1 :(得分:1)

使用适当的内容初始化字符串m。

  

String m =“”;