在两个活动之间使用HashMap提供结果失败

时间:2014-08-12 15:21:52

标签: android android-intent hashmap onactivityresult

背景

  • 有两项活动
  • 1x(MainActivity),1x(SubActivity - 带ListView的活动)
  • 主要活动扩展FragmentActivity,信息将用于片段
  • 当点击MainActivity的MenuItem时,将打开SubActivity。
  • 为ListView使用HashMap

我的目标:

  • 点击的项目的HashMap值应该发送回MainActivity,并且应该关闭SubActivity(使用ListView)。

问题:

java.lang.RunTimeException: Failure delivering results ResultInfo{who=null, request=1, 
result=0, data=Intent { (has extras) }} to activity.

我认为我犯了一个大错,但我无法解决它。


来自 onOptionsItemSelected onActivityResult

切换案例位于 MainActivity

  • PICKED的值为1;

    switch(item.getItemId()){

    case R.id.icon:
        Intent myIntent = new Intent(MainActivity.this, HeroListActivity.class);
        MainActivity.this.startActivityForResult(myIntent, PICKED);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    } 
    
    
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 1) {
                Intent intent = getIntent();
                HashMap<String, String> aList = (HashMap<String, String>)intent.getSerializableExtra("map");
                Log.d("HashMap", aList.get("Name"));
            }
    

    }


使用ListView在 SubActivity

onItemClick

  • onItemClick正在运行,当我使用Log.d时,我从HashMap中获取了正确的数据。

    HashMap<String, String> o = (HashMap<String, String>) adapter.getItemAtPosition(position);
    Log.d("onItemClick", ""+o);
    
    Intent intent = new Intent();
    
    intent.putExtra("map", o);
    setResult(RESULTS_OK, intent);
    finish();
    

我希望有人可以帮助我,并提前致谢。

1 个答案:

答案 0 :(得分:0)

您应该在onActivityResult()方法

中替换此行
 Intent intent = getIntent();

用这个:

 Intent intent = data;

data是您传递的参数的名称 - 您的附加内容所在的位置。 getIntent()调用在此实例中返回null意图。