关于通过意图传递数据

时间:2013-11-07 09:04:31

标签: android android-intent

我有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吗?

3 个答案:

答案 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。