【发布时间】:2014-08-12 15:21:51
【问题描述】:
背景:
- 有两个活动
- 1x (MainActivity), 1x (SubActivity - 带有 ListView 的 Activity)
- Main Activity 扩展了 FragmentActivity,Infos 将在 Fragment 中使用
- 当单击 MainActivity 的 MenuItem 时,将打开子活动。
- 为 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 的 switch case 在 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")); }}
onItemClick 在 SubActivity 中与 ListView:
-
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();
我希望有人可以帮助我并提前致谢。
【问题讨论】:
-
您确定不尝试将调用拆分为两个活动吗?听起来你的线程真的很紧张,不能同时做两件事。
-
@Eenvincible 我几个月前开始使用 android,所以我没有足够的经验来回答这个问题。但我愿意接受任何建议。
-
尝试将 @Override 关键字添加到您的 onActivityResult() 方法 - 可能无法解决您的问题,但仍然是一个好习惯。
-
@notrix 在 onActivityResult() 方法之前已经有 @Override 并将其从我的帖子中删除,因为它破坏了布局。但是感谢您的评论。
标签: android android-intent hashmap onactivityresult