我在一个类中使用此方法填充Intent数据,然后将其传递回启动该方法的活动。这里我使用的意图是在onActivityResult()
中将项目添加到我的数据库中但正如标题所示,我发现"未能提供结果resultinfo"错误。
任何人都可以看到我收到此错误的原因吗?
这是我的代码的重要部分:
从第1课开始,收到意图:
@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课,发送内联网:
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
答案 0 :(得分:2)
请尝试这种方式,希望这有助于您解决问题。
有两种方式向/从另一个活动发送/获取数据
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.添加数据以捆绑并将包添加到意图。
如何投放:
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());
}
答案 1 :(得分:0)
你的问题在于:
activity {com.example.s188094_mappe3/com.example.s188094_mappe3.MainActivity}
您的包裹出现两次。它试图打开
com.example.s188094_mappe3/com.example.s188094_mappe3.MainActivity.class
但这并不存在。尝试清理项目,重新打开Eclipse,所有好东西。
在你说什么之前,我没有足够的声誉来发表评论。
如果有人有更好的解决方案,请重播。
干杯!