Android OnActivityResult总是0
-
12-10-2019 - |
题
这已经杀死了我两天了。我有一个称为第二个活动的主要活动A。活动B只是向用户提供listView。当我在列表视图上按一个项目时,我希望将几个字符串传递回主活动A,而Acciviy B将完成。
问题是我始终获得0的结果代码为0,数据包为null。我真的不明白为什么会发生这种情况。
这是我的代码。
启动活动b以结果:
Test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class);
startActivityForResult(i, RECIPE_CHOOSER);
}
});
这开始第二个活动罚款。活动B填充了listView,当我单击一个项目时,我正在尝试将一些数据发送回该活动A。
目前的任何文本,所以我在活动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正在完成工作,并且捆绑包确实确实拥有我通过的数据,但是在此过程中的某个时候丢失了。
我缺少的清单中有什么吗?到目前为止,这杀死了我在这个项目上的进展。
解决方案
在您的列表活动中,OnItemClickListener尝试以下以下替换setResult行:
if (getParent() == null) {
setResult(Activity.RESULT_OK, data);
}
else {
getParent().setResult(Activity.RESULT_OK, data);
}
我想知道是否有一个父活动,您需要将数据绑定到并设置结果。
其他提示
关于您的返回数据。
你做:
Bundle b = getIntent().getExtras();
但是“ getIntent()”返回开始此活动的意图。如果您希望从结果开始的活动中返回的数据,只需获取传递给的数据
protected void onActivityResult(int requestCode, int resultCode, Intent data)
您的代码正常工作........
in u Activity B
use
setResult(0, mIntent);insted of setResult(RESULT_OK, mIntent);
in your Activity A:
use
case 0: insted case RECIPE_CHOOSER: and
use System.out.println(b.getString("TEXT"));
您将获得输出
请工作... pleeeaasee
不隶属于 StackOverflow