这已经杀死了我两天了。我有一个称为第二个活动的主要活动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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top