0

我有一个应用程序3 Activities。如果app第一次运行,流程是这样的

 Activity 1 ---> Activity 2 ---> Acitvity3

如果它不是第一次运行,那么它会跳过Activity2

 Activity 1 --->  Acitvity3

活动 3 需要来自活动 2 的一些数据。

    Bundle b = getIntent().getExtras();
    Integer mInt= b.getInt(filename);

Acitvity 1 不发送此数据,如果 Activity 3 从 Acitvity1 启动(即不是第一次运行),这会强制应用程序崩溃。如果 Activity1 调用它,我有什么方法可以跳过getExtras在 Activity3 中的检查?

4

3 回答 3

2

每当Activity3Activity1ot开始时,Activity2像这样传递一个字符串变量..

如果来自 ActivityA

 intent.putExtra("from", "ActivityA");

如果来自 ActivityB

intent.putExtra("from", "ActivityB");

并在 Activity3 中获取值并检查它是否来自 Activity2 执行操作..

String stringExtra = getIntent().getStringExtra("from");
    if (stringExtra.equals("ActivityA")) {

    }else {

    }
于 2013-11-07T09:09:40.440 回答
1

Android 中无法获取调用当前 Activity 的 Activity。想想看,调用“活动”可能是主页。

相反,您可以尝试在附加项中传递另一个变量,说明什么活动正在调用新活动(一个简单的字符串,甚至是一个类对象),然后根据正在调用的活动,您可以决定如何处理一个简单的 "如果”声明。

希望这可以帮助 :)

于 2013-11-07T09:09:11.357 回答
0

添加一个额外的布尔值作为标志以确定哪个活动启动了 Activity3。在尝试从 extras 中获取 mInt 之前,请先读取布尔值,您将在 Activity 1 的 Intent 启动 Activity 3 中将其设置为 false,并在 Activity2 的 Intent 中设置为 true。

于 2013-11-07T09:10:40.603 回答