这个问题困扰我已经两天了。我有一个主Activity A,它调用第二个Activity B。Activity B中只是向用户呈现一个列表视图。当我点击列表视图中的项目时,我希望将一些字符串传回给主Activity A,并且Activity B将会被关闭。
问题是,我总是收到结果代码0和数据包为空的情况。我真的不明白为什么会发生这种情况。
以下是我的代码。
启动带有结果的Activity B:
问题是,我总是收到结果代码0和数据包为空的情况。我真的不明白为什么会发生这种情况。
以下是我的代码。
启动带有结果的Activity B:
Test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class);
startActivityForResult(i, RECIPE_CHOOSER);
}
});
这个可以成功启动第二个Activity。Activity B填充了一个列表视图,当我点击某一项时,我想将一些数据发送回调用的Activity A。
目前还没有任何文本内容,因此我在Activity B中使用了以下代码:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString("TEXT", "Please work... pleeeeaasee");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
在调用的活动中,我有以下内容监听返回:protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch(requestCode) {
//TODO
case RECIPE_CHOOSER:
Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show();
if (resultCode == RESULT_OK) {
Bundle b = getIntent().getExtras();
Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show();
}
if (resultCode == RESULT_CANCELED) {
}
break;
}
}
}
我可以看到请求代码被正确返回,但结果代码始终为0且数据始终为空。
我已经详细排查了问题,并且setResult方法正在工作,bundle确实有我传递的数据,但在某个时候它丢失了。
是否有任何我遗漏的清单中的内容或其他问题。这已经一度阻碍了我的项目进展。