【发布时间】:2015-10-01 17:14:51
【问题描述】:
当我在第二个 Activity 中按下按钮时,intent 会向 MainActivity 发送一个字符串。它在 onClick 方法中:
Intent intent = new Intent(this, MainActivity.class);
String wynik = "clear";
intent.putExtra("clearList", wynik);
和主要活动,在 onCreate 方法中:
Intent intent2 = getIntent();
wynik = intent2.getStringExtra("clearList");
if (wynik.equals("clear")) {
tempLukasz = 0;
tempMarcelina = 0;
tempKarolina = 0;
foodCategorySum = 0;
catCategorySum = 0;
othersCategorySum = 0;
lukaszJedzenie = 0;
lukaszKot = 0;
lukaszInne = 0;
marcelinaJedzenie = 0;
marcelinaKot = 0;
marcelinaInne = 0;
karolinaJedzenie = 0;
karolinaKot = 0;
karolinaInne = 0;
newPayments.clear();
wynik = "";
}
所以当 MainActivity 收到这个“清除”消息时,它应该将我的数字设置为 0 并清除列表。 Pic.1 是我的主要活动窗口的示例:
在第二张图片中,我希望在第二个活动中按下 AFTER 按钮
不幸的是它不起作用:这一行抛出 NullPointerException:
if (wynik.equals("clear")) {
任何想法我在哪里犯了错误?我认为检查 if ( getIntent() != null ) 会解决这个问题,或者只是用 try-catch 包围我的 IF 类,但它也不起作用。
【问题讨论】:
-
请发布您用于发送和接收意图的确切代码
-
为什么需要从第二个活动中调用 MainActivity,因为按下后退按钮仍然会带你回到 MainActivity。
-
它不是后退按钮,它是第二个活动中的一个按钮,它将一些数据存储在第二个活动的 ListView 中,并且在它显示数据后我想“重置”第一个活动,以便每个number 和 list 被置零
-
尝试探索 startActivityForResult 而不是在 SecondActivity 中再次启动 MainActivity。此外,当您说您获得 NPE 时,您也应该发布异常跟踪,否则将无法提供帮助。
-
您可能希望使用 startActivityForResult,正如 Sharj 所提到的。 Here is an answer I wrote up with an example