在 Android 上使用 FragmentActivity.getIntent().getExtras() 时出现 NullPointerException
Posted
技术标签:
【中文标题】在 Android 上使用 FragmentActivity.getIntent().getExtras() 时出现 NullPointerException【英文标题】:NullPointerException when using FragmentActivity.getIntent().getExtras() on Android 【发布时间】:2012-06-23 04:40:18 【问题描述】:我开始尝试使用 android 片段,尤其是在水平 PagerAdapter 中显示活动。
在全局范围内它工作正常,但我无法将参数传递给我的 framgent 并将它们返回到 onCreateView() 方法中。
基本上,我这样创建片段:
Bundle args = new Bundle();
args.putInt(ActionCodes.GAME_INDEX, game.getIndex());
fragments.add(Fragment.instantiate(this, GameReadActivityFragment.class.getName(), args));
请注意,我将 Bundle
参数传递给 Fragment.instantiate() 方法。
然后,在 GameReadActivityFragment.onCreateView() 中,我执行以下操作:
int gameIndex = this.fragmentActivity.getIntent().getExtras().getInt(ActionCodes.GAME_INDEX);
但我得到一个 NullPointerException 因为getExtras()
返回 null :(
我搜索了一个答案,但没有找到答案。我倾向于认为我必须使用不同于 getExtras()
的东西来访问这个 Bundle,但我不知道是什么。
提前致谢。
【问题讨论】:
尝试将代码放在片段的 onStart() 中 我不认为该捆绑包与任何意图相关联。 AFAIK,实例化片段不使用意图......(如果我误解了这一点,请告诉我)。 【参考方案1】:这样做:
public static MyFragment newInstance(String bar)
MyFragment frag = new MyFragment();
Bundle args = new Bundle();
args.putString("foo", bar);
frag.setArguments(args);
return frag;
然后在onCreateView
,你可以这样做:
String text = getArguments().getString("foo");
【讨论】:
以上是关于在 Android 上使用 FragmentActivity.getIntent().getExtras() 时出现 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 JavaScript 在 iPhone 上播放声音,但可以在 Android 上播放
Android:在 Android 框架位置 API 上使用 FusedLocationProviderApi 的优缺点是啥?
API 不能在使用 axios 的 React Native 中的旧 Android 设备(Android 7 或更低版本)上工作,但在新设备上工作