【问题标题】:onActivityResult() and: failure delivering result resultinfo who=null request=1 result=-1 data=intent (has extras)onActivityResult() 和:传递结果失败 resultinfo who=null request=1 result=-1 data=intent (有额外)
【发布时间】:2014-10-29 08:30:09
【问题描述】:

我在一个类中有这个方法,用数据填充 Intent,然后将其传递回启动该方法的活动。在这里,我使用意图将项目添加到我的数据库中 onActivityResult()

但正如标题所示,我收到“未能提供结果结果信息”错误。

谁能看到我为什么会收到这个错误?

这是我的代码的基本部分:

来自第 1 类,接收 Intent:

    @Override
protected void onActivityResult(int reqCode, int resCode, Intent data){
    super.onActivityResult(reqCode, resCode, data);

    if(reqCode == ENTER_DATA_REQUEST_CODE && resCode == RESULT_OK){
        hkDBhelper.addItem(data.getExtras().getString("tag_grocery_foodItem"),
                            data.getExtras().getString("tag_grocery_weight"),
                            data.getExtras().getString("tag_grocery_price"),
                            data.getExtras().getString("tag_grocery_brand"),
                            data.getExtras().getString("tag_grocery_category"));
        hkCursorA.changeCursor(hkDBhelper.listAll());
    }
}

编辑:添加:

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.addItem) {
        startActivityForResult(new Intent(this, AddFood.class), ENTER_DATA_REQUEST_CODE);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

还有第 2 类,发送 Intnet:

    public void addItem(){
    setFood = itemFood.getText().toString();
    setWeight = itemWeight.getText().toString();
    setPrice = itemPrice.getText().toString();
    setBrand = itemBrand.getText().toString();
    setCategory = catagorySpinner.getSelectedItem().toString();


    if(setFood.length() != 0 && setWeight.length() != 0 && setPrice.length() != 0
            && setBrand.length() != 0 && setCategory.length() != 0){
        Intent newIntent = getIntent();
        newIntent.putExtra("tag_grocery_foodItem", setFood);
        newIntent.putExtra("tag_grocery_weight", setWeight);
        newIntent.putExtra("tag_grocery_price", setPrice);
        newIntent.putExtra("tag_grocery_brand", setBrand);
        newIntent.putExtra("tag_grocery_category", setCategory);

        this.setResult(RESULT_OK, newIntent);
        finish();
    }
}

还有一些来自 logcat 的内容:

10-29 09:28:23.569: E/AndroidRuntime(32565): java.lang.RuntimeException: Failure delivering result
ResultInfo{who=null, request=1, result=-1, data=Intent { cmp=com.example.s188094_mappe3/.AddFood
(has extras) }} to activity {com.example.s188094_mappe3/com.example.s188094_mappe3.MainActivity}:
java.lang.NullPointerException

【问题讨论】:

  • 可以是 hkDBhelper、hkCursorA 和 data 中的一个为空。
  • 不太确定我明白你的意思。问题是,activityOnResult() 在另一个类中工作得很好
  • 你使用的是第 1 类的 startActivityForResult 吗?
  • 是的。我会编辑帖子

标签: java android sqlite android-intent onactivityresult


【解决方案1】:

试试这个方法,希望能帮助你解决问题。

有两种方式向/从另一个活动发送/获取数据

1.向意图添加数据。

怎么放:

Intent newIntent = new Intent();
newIntent.putExtra("tag_grocery_foodItem", setFood);
newIntent.putExtra("tag_grocery_weight", setWeight);
newIntent.putExtra("tag_grocery_price", setPrice);
newIntent.putExtra("tag_grocery_brand", setBrand);
newIntent.putExtra("tag_grocery_category", setCategory);
setResult(RESULT_OK, newIntent);
finish();

如何获得:

if(reqCode == ENTER_DATA_REQUEST_CODE && resCode == RESULT_OK){
   hkDBhelper.addItem(data.getStringExtra("tag_grocery_foodItem"),
   data.getStringExtra("tag_grocery_weight"),
   data.getStringExtra("tag_grocery_price"),
   data.getStringExtra("tag_grocery_brand"),
   data.getStringExtra("tag_grocery_category"));
   hkCursorA.changeCursor(hkDBhelper.listAll());
}

2.将数据添加到bundle并将bundle添加到intent。

怎么放:

Intent newIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("tag_grocery_foodItem", setFood);
bundle.putString("tag_grocery_weight", setWeight);
bundle.putString("tag_grocery_price", setPrice);
bundle.putString("tag_grocery_brand", setBrand);
bundle.putString("tag_grocery_category", setCategory);
newIntent.putExtras(bundle);
setResult(RESULT_OK, newIntent);
finish();

如何获得:

if(reqCode == ENTER_DATA_REQUEST_CODE && resCode == RESULT_OK){
   hkDBhelper.addItem(data.getExtras().getString("tag_grocery_foodItem"),
   data.getExtras().getString("tag_grocery_weight"),
   data.getExtras().getString("tag_grocery_price"),
   data.getExtras().getString("tag_grocery_brand"),
   data.getExtras().getString("tag_grocery_category"));
   hkCursorA.changeCursor(hkDBhelper.listAll());
}

【讨论】:

    【解决方案2】:

    你的问题在这里:

    activity {com.example.s188094_mappe3/com.example.s188094_mappe3.MainActivity}
    

    您的包裹出现两次。它试图打开

    com.example.s188094_mappe3/com.example.s188094_mappe3.MainActivity.class 
    

    但这并不存在。尝试清理你的项目,重新打开 Eclipse,所有的好东西。

    在你说什么之前,我没有足够的声誉来发表评论。

    如果有人对此有更好的解决方案,请重播。

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多