如何在 Android 的单个活动中处理多个意图?

4

我在我的Android应用程序中有三个活动类。 第一个活动必须将意图传递给第二个和第三个活动,其中一个必须将意图传递给第二个。 在这种情况下,如何在同一活动中处理两个意图。 我认为我应该使用if,else条件。但我怀疑是否有一些技术可以在单个活动中处理多个意图?


1
没有办法同时从这两个活动中调用第二个活动..!! - Rat-a-tat-a-tat Ratatouille
1
只需按照通常的方式调用意图并相应地获取值。还要检查空值。 - Rat-a-tat-a-tat Ratatouille
3个回答

1

只是一个简单的if else条件:

if (intent.getStringExtra("com.example.ActivityOne.intentOne") != null) {
   // do something
} else if (intent.getStringExtra("com.example.ActivityThree.intentThree") != null) {
   // do something else
}

1
如果你只是想知道哪个Activity发出了当前的Intent,以了解应该期望哪些extras或者应该做什么,有时我会使用一个任意的String extra并检查它是什么。因此,在发送Activity时,可以发送类似以下内容的东西。
Intent i = new Intent(FirstActivity.this, NextActivtiy.class);
i.putExtra("source", "first");  // source is the string to check where it is coming from
startActivity(i);

在接收的Activity中。
Intent intent = getIntent();
String from = intent.getStringExtra("source");
if ("first".equals(from))
{
     // do stuff if from first Activity
}
else
{
     // do other stuff
}

检查 extras 是否不为空

 if (intent.getExtras() != null) {
    String from = intent.getStringExtra("source");
    if ("first".equals(from)){
        // do stuff if from first Activity
    }
    else {
        // do other stuff
    }
}

在if()语句中增加一个null检查是否有意义:“if(“first”!= null && “first”。equals(from))…”? - AJW
另外,如果有多个活动发出意图,那么接收活动中的“Intent intent = getIntent();”是否能处理所有意图? - AJW
@AJW 是的,但这也取决于你的情况。如果你能保证它永远不会为空,那么它显然是无用的。当然,保险起见总是更好的。在尝试访问它们之前,检查 extras 是否为空通常也是一个好主意。对于你的第二个问题,是的。当调用此活动时,它将处理它们中的每一个。 - codeMagic
明白了。您会如何建议测试extras是否为null?在您上面的答案中,是这样吗:“if (from != null)”?还是其他方式? - AJW
好的,明白了。谢谢! - AJW

1
使用startActivityForResult()onActivityResult()。这是您的解决方案。

我想你是指 onActivityResult(),对吗? - Razgriz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接