Android:谁启动 Activity

标签 android

我有 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 额外方法,例如 booleanint 等。


至于为什么无法访问对方创建Intent时提供的Context:

Android 对提供的 Context(即您的 this)所做的唯一事情就是创建一个 ComponentName从中。该类仅保留所提供的Context并丢弃其他任何内容。

因此,理论上您可以将 Activity 放入不同的包中,然后在接收端对其进行 getIntent().getComponentName().getPackageName() 操作 - 但请不要这样做。 Intent extras 是正确的选择。

关于Android:谁启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433612/

相关文章:

android - 显示 fragment 点击

c# - Xamarin ListView 图像在滚动上消失

java - 在 Eclipse 中发现从 Android 的方向 API JSON 数据中提取 html_instructions 的困难

android - Ionic 模拟 Android 错误 - 退出代码 2

c# - iOS、Android、Windows 10 移动模拟器是否可用于使用 Visual Studio 2015 开发 Xamarin.Forms?

javascript - Uncaught TypeError : pre, template,textarea,script,style is not iterable

java - 如果值为零或 "",是否可以将我的 EditText 设置为 Invisible ?

java - API 23 本地位置不可用

android - 在 Canvas 上动画绘制圆/弧

Android:检查 View 是否以编程方式与父底部/顶部对齐