【问题标题】:Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity; java.lang.NullPointerException将结果 ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} 传递给活动失败; java.lang.NullPointerException
【发布时间】:2012-06-18 12:35:09
【问题描述】:

我正在为我的最后一年项目创建触发器和操作应用程序,

我将子活动结果返回给中间活动,然后向该活动添加一些数据并再次将其发送到主活动,

我为 Trigger 子模块和 Action 子模块都做了,都喜欢相同的编码......

触发模块工作正常,但是当动作模块运行时应用程序被强制停止

错误是

E/AndroidRuntime(5104): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {mani.droid.mechanize/mani.droid.mechanize.ActionListActivity}: java.lang.NullPointerException

子 onActivityResult

public void onSave(View v)
{
    if(txtNum.length() != 0)
    {
        String strTmp = null;
        Intent resultInt = new Intent();
        strTmp = txtNum.getText().toString();
        resultInt.putExtra("Num", strTmp);
        resultInt.putExtra("SubName", strTmp);
        setResult(Activity.RESULT_OK, resultInt);
        finish();
    }
    else
        Toast.makeText(getApplicationContext(), "Please enter number or choose from contact", Toast.LENGTH_SHORT).show();
}

中间 onActivityResult

//getting result from other activity and sending to action list activity
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK)
    {
        switch(reqCode)
        {
            case 1:
                    data.putExtra("ActionName", txtAction);
                    setResult(Activity.RESULT_OK, data);
                    finish();
                    break;
        }
    }
}

主 onActivityResult

//Getting Trigger parameters and adding to list
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK)
    {
        switch(reqCode)
        {
            case 1:
                if (data.equals(null))
                {
                    Toast.makeText(context, "Intent is Null", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    //String actName = data.getStringExtra("ActionName");
                    String subName = data.getStringExtra("SubName");
                    Toast.makeText(context, subName, Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
} 

【问题讨论】:

    标签: android null


    【解决方案1】:

    这意味着Intent 接收器在其onActivityResult() 中抛出了异常。我可以在这里看到NullPointerExceptiondata.equals(null) 肯定是错误的,因为当datanull 时它会引发异常。你的意思是data == null

    【讨论】:

    • 我解决了这个问题并解决了一些问题,但我不知道它是如何解决的,我之前也尝试过 data == null,同样的错误,这就是我尝试 data.equals(null )
    • 那么你的NullPointerException 在别处。它会将您定向到一个行号,因此请遵循该行号。你没有发布你的堆栈跟踪——总是一个好主意。 data.equals(null) 在 Java 中永远不会正确。总是false 或者抛出异常。
    • 同样的问题谁能告诉我什么是who=null
    【解决方案2】:

    只需检查 null != data ,因为数据等于 null

    【讨论】:

    • 这表示数据为空?
    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多