Java 在Android中使用意图时出现空指针异常
我有一个关于意图的问题 甲级Java 在Android中使用意图时出现空指针异常,java,android,Java,Android,我有一个关于意图的问题 甲级 Intent i=new Intent(getApplicationContext(),JobOffer.class); i.putExtra("From",aryListBean.get(arg2).getUser()); i.putExtra("StartDate",aryListBean.get(arg2).getStartDate()); i.putExtra("DueDate",aryListBean.get(arg2).getEndDate()); st
Intent i=new Intent(getApplicationContext(),JobOffer.class);
i.putExtra("From",aryListBean.get(arg2).getUser());
i.putExtra("StartDate",aryListBean.get(arg2).getStartDate());
i.putExtra("DueDate",aryListBean.get(arg2).getEndDate());
startActivity(i);
B类
Bundle b=getIntent().getExtras();
String user=b.getString("From");
String startdate=b.getString("StartDate");
String duedate=b.getString("DueDate");
ArrayList<String> hr_offerdet=b.getStringArrayList("AryHrOffer");
tvUser.setText(" "+user);
tvStarDate.setText(" "+startdate);
tvDueDate.setText(" "+duedate);
Bundle b=getIntent().getExtras();
String user=b.getString(“From”);
String startdate=b.getString(“startdate”);
字符串duedate=b.getString(“duedate”);
ArrayList hr_offerNet=b.getStringArrayList(“AryHrOffer”);
tvUser.setText(“+user”);
tvStarDate.setText(“+startdate”);
tvDueDate.setText(“+duedate”);
C类:返回B类按钮
现在,我已经成功地将数据发送到类A到类B。我将数据发送到类B。现在,当我从类B移动到类C,然后再次返回到类B时,出现了Nullpointer异常。你有什么不同的方法来解决这个问题吗?请帮助您必须检查
bundle
是否为null
if(b!=null){
// your code
}
您必须检查
bundle
是否为null
if(b!=null){
// your code
}
在代码中,您无法通过带有键“AryHrOffer”的arraylist 此外,您应该始终首先检查捆绑包是否存在 例如,
如果(b!=null){/…}
然后,所有需要打开活动B的类都应该传递所需的参数(如果它们确实是必需的),否则如果bundle为null则忽略
编辑:
在重读你的问题之后,我注意到你说
“。然后,再次返回到类B,出现空指针异常”
问题可能不是有意传递额外信息,而是在您的活动B的简历中出现了一些信息。在您的代码中,您无法通过带有键“AryHrOffer”的arraylist 此外,您应该始终首先检查捆绑包是否存在 例如,
如果(b!=null){/…}
然后,所有需要打开活动B的类都应该传递所需的参数(如果它们确实是必需的),否则如果bundle为null则忽略
编辑:
在重读你的问题之后,我注意到你说
“。然后,再次返回到类B,出现空指针异常”
问题可能不是有意传递额外信息,而是活动B的简历上的内容。首先:请提供logcat,以及您在哪个指令上有空指针 你必须检查这些东西:
if (getIntent() != null && getIntent().getExtras() != null) {
Bundle b = getIntent().getExtras();
String user = b.getString("From");
String startdate = b.getString("StartDate");
String duedate = b.getString("DueDate");
ArrayList < String > hr_offerdet = b.getStringArrayList("AryHrOffer");
tvUser.setText(" " + user);
tvStarDate.setText(" " + startdate);
tvDueDate.setText(" " + duedate);
}
if(getIntent()!=null&&getIntent().getExtras()!=null){
Bundle b=getIntent().getExtras();
String user=b.getString(“From”);
String startdate=b.getString(“startdate”);
字符串duedate=b.getString(“duedate”);
ArrayListhr_offerNet=b.getStringArrayList(“AryHrOffer”);
tvUser.setText(“+user”);
tvStarDate.setText(“+startdate”);
tvDueDate.setText(“+duedate”);
}
首先:请提供logcat以及哪一条指令上有空指针
你必须检查这些东西:
if (getIntent() != null && getIntent().getExtras() != null) {
Bundle b = getIntent().getExtras();
String user = b.getString("From");
String startdate = b.getString("StartDate");
String duedate = b.getString("DueDate");
ArrayList < String > hr_offerdet = b.getStringArrayList("AryHrOffer");
tvUser.setText(" " + user);
tvStarDate.setText(" " + startdate);
tvDueDate.setText(" " + duedate);
}
if(getIntent()!=null&&getIntent().getExtras()!=null){
Bundle b=getIntent().getExtras();
String user=b.getString(“From”);
String startdate=b.getString(“startdate”);
字符串duedate=b.getString(“duedate”);
ArrayListhr_offerNet=b.getStringArrayList(“AryHrOffer”);
tvUser.setText(“+user”);
tvStarDate.setText(“+startdate”);
tvDueDate.setText(“+duedate”);
}
当您从C返回到B时,该绑定为空。您必须设置条件您可以将此数据保存在共享首选项中,然后在需要时重用它例如,如果您对意图感到困惑…B是否仍在运行并拥有所有数据?当您需要从C到B的数据时,请使用Resultent。@Daler难道您不同意以XML格式(冗余!)在生命周期(写入周期)有限的闪存文件系统上存储某些内容与Android在内存中传递意图附加项的良好工作方式相比是一种资源浪费吗?当然,几乎每个应用程序都使用SharedReference,但希望不要将非持久性数据从一个活动传递到另一个活动。每个工具都有自己的域,SharedReferences不是在活动之间传递临时应用程序状态数据的正确工具。@Daler谢谢。在API 9中,除了commit()
之外,还引入了SharedReferences.Editor.apply()
,这是有原因的。虽然功能相同,apply()
会自动在后台运行,这样主/UI线程就不会被写操作阻塞。我想当时很多人已经开始广泛使用共享参考资料了……;)当您从C返回到B时,该Bundle为null。您必须设置条件您可以将此数据保存在共享首选项中,然后在需要时重用它例如,如果您对意图感到困惑…B是否仍在运行并拥有所有数据?当您需要从C到B的数据时,请使用Resultent。@Daler难道您不同意以XML格式(冗余!)在生命周期(写入周期)有限的闪存文件系统上存储某些内容与Android在内存中传递意图附加项的良好工作方式相比是一种资源浪费吗?当然,几乎每个应用程序都使用SharedReference,但希望不要将非持久性数据从一个活动传递到另一个活动。每个工具都有自己的域,SharedReferences不是在活动之间传递临时应用程序状态数据的正确工具。@Daler谢谢。在API 9中,除了commit()
之外,还引入了SharedReferences.Editor.apply()
,这是有原因的。虽然功能相同,apply()
会自动在后台运行,这样主/UI线程就不会被写操作阻塞。我想当时很多人已经开始广泛使用共享参考资料了……;)谁告诉过你,如果避免了例外,原始海报会很高兴?你不认为他会想要手头有他的意图数据吗?谁告诉你,如果避免了例外,原始海报会很高兴?你不认为他会想要他的