我有3 Activities
的应用。
如果应用程序第一次运行,则流程就像这样
Activity 1 ---> Activity 2 ---> Acitvity3
如果不是第一次运行,那么它会跳过sholud Activity2
Activity 1 ---> Acitvity3
活动3期望来自Activity2的一些数据。
Bundle b = getIntent().getExtras();
Integer mInt= b.getInt(filename);
Acitvity 1不发送此数据,如果从Acitvity1启动活动3(即不首次运行),则会强制应用程序崩溃。如果Activity1调用它,我可以通过哪种方式跳过在Activity3中检查getExtras
吗?
答案 0 :(得分:2)
每当从Activity3
ot Activity1
开始Activity2
时,就会传递一个这样的字符串变量..
如果来自ActivityA
intent.putExtra("from", "ActivityA");
如果来自ActivityB
intent.putExtra("from", "ActivityB");
并在Activity3中获取值并检查它是否来自Activity2执行操作..
String stringExtra = getIntent().getStringExtra("from");
if (stringExtra.equals("ActivityA")) {
}else {
}
答案 1 :(得分:1)
在Android中无法获取调用当前活动的Activity。想想看,主叫“活动”可能是主页。
相反,您可以尝试在附加内容中传递另一个变量,说明哪些活动正在调用新活动(一个简单的字符串,甚至是一个Class对象),然后根据调用的活动,您可以决定如何处理一个简单的“如果”陈述。
希望这会有所帮助:)
答案 2 :(得分:0)
添加一个boolean extra作为标志,以确定哪个活动启动了Activity3。在尝试从extras中获取mInt之前,先读取boolean,在Activity 1的Intent启动Activity 3中设置为false,在Activity2的Intent中设置为true。