【问题标题】:Failure delivering result ResultInfo传递结果 ResultInfo 失败
【发布时间】:2014-01-13 23:29:25
【问题描述】:

有很多人在 stackoverflow 上遇到过同样的错误,但我在这些帖子中找不到任何相关的解决方案。我的 MainActivity 正在使用 startActivityForResult() 开始一个新活动 (SecondActivity); SecondActivity 然后使用 onBackPressed() 返回一些数据;和 putExtra();

从 MainActivity.java 中提取:

public void addNewNote(View v){

    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("Source", "NEW");
    startActivityForResult(intent, 1); //1 is the result code

}

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

    Log.v("TAG", data.getStringExtra("Note"));
      if (requestCode == 1) {

         if(resultCode == RESULT_OK){        
             listItems.add(data.getStringExtra("Note"));
             Log.v("TAG", data.getStringExtra("Note"));
             adapter.notifyDataSetChanged();
             listView.invalidateViews();
         }
         if (resultCode == RESULT_CANCELED) {   

         }
      }

}

从 SecondActivity.java 中提取:

@Override
public void onBackPressed() {

    super.onBackPressed();
    if (mainTextField.getText() != null){
        Intent returnIntent = new Intent();
        returnIntent.putExtra("Note",mainTextField.getText());
        setResult(RESULT_OK, returnIntent);     
        finish();
    } else {
        Intent returnIntent = new Intent();
        setResult(RESULT_CANCELED, returnIntent);        
        finish();
    }

}

Logcat:

【问题讨论】:

  • 第 1 行写的内容。 56 在 MainActivity?
  • Log.v("TAG", data.getStringExtra("Note"));
  • 在这两种情况下都尝试 .toString ,你会得到null
  • 当您使用“Note”键获取数据时,您会得到“null”。
  • chintan,不幸的是 .toString 没有帮助。 amit,你知道SecondActivity中的值在传递之前是否为null

标签: java android nullpointerexception


【解决方案1】:

我的问题是我使用了 getIntent(),从而获得了当前活动的意图。

当我切换到 data.getStringExtra() 时,它起作用了。业余的错误...

【讨论】:

    【解决方案2】:

    试试这个-

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
          if (requestCode == 1 && data != null) 
          {
             Log.v("TAG", data.getStringExtra("Note"));
             if(resultCode == RESULT_OK)
             {        
                 listItems.add(data.getStringExtra("Note"));
                 Log.v("TAG", data.getStringExtra("Note"));
                 adapter.notifyDataSetChanged();
                 listView.invalidateViews();
             }
             if (resultCode == RESULT_CANCELED) 
             {   
    
             }
          }
    }
    

    【讨论】:

    • 好的,这会阻止错误触发,但是数据似乎总是为空,所以它仍然无法正常工作,不过谢谢
    • 当你在“SecondActivity”类中设置值时,这样做 - returnIntent.putExtra("Note",mainTextField.getText().toString());
    • 是的,我刚刚尝试过,现在就是这样,仍然无法正常工作,而且我知道该日志语句从文本字段中打印出正确的字符串,我检查了。所以发回 onActivityResult 的 Intent 有问题
    • 是的!终于让它工作了,我把调用移到了超类 super.onBackPressed();毕竟,它开始工作了
    • 如果它一路帮助其他人,当我在 3 个不同的活动中使用相同的 onActivityResult 时,我的非常相似的问题出现了,它用新的用户名更新了 TextView。它在其中两项活动中有效,但在第三项活动中出现此错误。我的问题发生是因为我忘记在第三个活动中实际添加 TextView,这导致 OnActivityResult 中出现空指针异常,而不是返回实际上是问题。虽然这不是我的答案,但这里的讨论帮助我找到了解决方案。
    猜你喜欢
    • 2021-06-18
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多