Java 在Android中跨活动发送变量时,putExtra允许将变量设置为null
为了将变量从片段发送到活动,我使用了putExtra和extras.getString。然而,我发现在使用Log.e检查值时,由于我传递的变量变为=null,所以得到了一个NullPointerException。这发生在我开始活动之后 那么我如何防止这种情况发生呢。从而保持变量的值 片段代码:Java 在Android中跨活动发送变量时,putExtra允许将变量设置为null,java,android,android-activity,android-fragments,nullpointerexception,Java,Android,Android Activity,Android Fragments,Nullpointerexception,为了将变量从片段发送到活动,我使用了putExtra和extras.getString。然而,我发现在使用Log.e检查值时,由于我传递的变量变为=null,所以得到了一个NullPointerException。这发生在我开始活动之后 那么我如何防止这种情况发生呢。从而保持变量的值 片段代码: Integer IDPasser; Intent intent = new Intent(getActivity(), ArticleViewer.class); IDPasse
Integer IDPasser;
Intent intent = new Intent(getActivity(), ArticleViewer.class);
IDPasser = (Integer) data.ArticleID.toArray()[position];
intent.putExtra("ArticleID",IDPasser);
Log.e("Passer", IDPasser.toString()); //Shows that value is not = null.
startActivity(intent);
Bundle extras = getIntent().getExtras();
if (extras != null) {
Integer IDPasser = extras.getInt("ArticleID");
Log.e("TESTER", IDPasser.toString()); //NullPointerException due to IDPasser becoming = null.
}
活动代码:
Integer IDPasser;
Intent intent = new Intent(getActivity(), ArticleViewer.class);
IDPasser = (Integer) data.ArticleID.toArray()[position];
intent.putExtra("ArticleID",IDPasser);
Log.e("Passer", IDPasser.toString()); //Shows that value is not = null.
startActivity(intent);
Bundle extras = getIntent().getExtras();
if (extras != null) {
Integer IDPasser = extras.getInt("ArticleID");
Log.e("TESTER", IDPasser.toString()); //NullPointerException due to IDPasser becoming = null.
}
我建议将IDPasser设置为int而不是整数,以避免混淆额外数据是作为on对象传递还是作为int传递。我认为您可能会遇到一个问题,即您在技术上将值插入为putExtra(…可序列化),并希望通过extras.getInt(…)将其导出 然后:
片段
代码很好。在活动中
:
int idPasser = getIntent().getIntExtra("ArticleID", 0);
getIntExtra()
中的第二个参数是默认值,如果int
额外值对应于键“ArticleID”
找不到。字符串名称是什么?由于我不确定您所说的引用部分可能会混淆,您能否提供一个示例。对于此行:Integer IDPasser=getIntent().getInt(“ArticleID”);我得到一个错误:“方法getInt(String)对于类型Intent“on”.getInt未定义。请再次查看我的答案:getIntExtra()
,而不是getInt()
。