我有 3 个 Activity : Activity 1、 Activity 2、 Activity 3。 Activity1和Activity3可以启动Activity2:
startActivity (new Intent(this,Activity2));
在 Activity2 中我如何检查哪个类启动 Activity2 ?有什么办法可以从 Intent 中获取信息吗?谢谢...
我不想在 Intent 中放入任何内容。我想我不需要那个。当我开始 Intent 时,我已经说过我是从什么上下文中执行此操作的(new Intent(*this*
,Activity2))。而这个“这个”我想在Activity2中认出来!这可能吗?
最佳答案
您可以在 Intent
的“额外”Bundle
中传递该信息:
在Activity1
中:
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("caller", "activity1");
startActivity(intent);
在Activity2
中:
String caller = getIntent().getStringExtra("caller");
还有其他数据类型的 get/put 额外方法,例如 boolean
、int
等。
至于为什么无法访问对方创建Intent
时提供的Context
:
Android 对提供的 Context
(即您的 this
)所做的唯一事情就是创建一个 ComponentName
从中。该类仅保留所提供的Context
的包并丢弃其他任何内容。
因此,理论上您可以将 Activity 放入不同的包中,然后在接收端对其进行 getIntent().getComponentName().getPackageName()
操作 - 但请不要这样做。 Intent
extras 是正确的选择。
关于Android:谁启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433612/