正确传递活动之间的值
你好,我是新来的android和我有一个问题,我不知道如何解决。我有3项活动,ActivityMain,活动A和活动B。 ActivityMain是开始活动。从ActivityMain用户可以移动到ActivityA,当他们这样做,一个值从ActivityMain传递给ActivityA这样的:正确传递活动之间的值
Intent i = new Intent(context, ActivityA.class);
i.putExtra("eventId", eventId);
startActivity(i);
在我ActivityA的onCreate方法我有一个的init()功能获取价值是这样的:
public void init() {
this.eventId = Integer.parseInt(getIntent().getExtras().get("eventId").toString());
}
现在,这是我的问题,因为某些原因,当我从ActivityA导航到ActivityB然后我点击我的背应用程序停止工作空指针异常引发上述代码行。
将数据从“Extra”缓存到变量 - 在活动中使用onResume()方法设置任何配置。
我不明白,为什么onCreate()被称为当我按回来,是它应该如何工作? – user3718908
这是正确的 - 活动生命周期有一个层次结构,它被遵循 - onStop在活动落后并返回时被调用 - 请参阅这里了解更多详细信息 - http://developer.android.com/reference/android/app/Activity.html# ActivityLifecycle – takrishna
必须使用操作系统提供的“onResume”和“onCreate”句柄 - 您可以通过检查(“if”语句)来确定您的活动实例是否已经在backstack中,并跳过获取“bundle”通过getInt/getBoolean – takrishna
问题是你直接将数据传递给意图,试图从意图包中访问它,但不是意图。使用intent.getIntExtra("eventId")
替换:
Integer.parseInt(getIntent().getExtras().get("eventId").toString());
随着
eventId = getIntent().getIntExtra("eventId");
其次,如果你是EVENTID整数然后用intent.getIntExtra,如果事件ID为字符串,然后使用intent.getStringExtra
谢谢,我没有看到“getInt()”函数,但有getIntExtra,它有两个参数。 – user3718908
所以你有这个理由不接受答案;)没关系 – Pehlaj
虽然这并没有解决我的问题,但看起来问题不在于我是如何传递值,而是当我移动到下一个活动来节省内存,所以无论何时我导航回onCreate首先被调用,而不是onStart。 – user3718908
如果你通过整数尝试像这样
this.eventId = getIntent().getExtras().getInt("eventId");
或者如果你传递字符串。试试这个
this.eventId = Integer.parseInt(getIntent().getExtras().getString("eventId"));
检查的目的和你是从意图 –
答案不是必要的检索整数空值,但你应该抓住NumberFormatException的..... – Skywalker
i.putExtras(“事件ID”,EVENTID );试试这个代码.... –