使用意图启动一个活动并获取引用

3

我目前正在使用一个Android中的应用程序项目,其中包括一个库.

这个库本身是一个应用程序,因为我想将其集成到主应用程序中,所以将其添加为外部库。

一切正常,我使用此代码启动库应用程序。

Intent i = new Intent(this, Launcher.class);
startActivity(i);

问题是我需要控制这个已添加为库的应用程序。我需要禁用和启用某些功能,只有当我拥有对启动活动的引用时才能实现。 还有一件事,我想在主应用程序中创建一个菜单来控制库应用程序。因此,我不想在创建信息时立即传递信息,而是在用户点击不同选项时进行更改。 基本上,我有应用程序A和作为库集成到A中的应用程序B。我想在正常启动后从应用程序A的菜单中控制应用程序B。例如,在A中使用不同选项的菜单与B相关。这就是为什么我要一个引用的原因。
我的第一个问题是,是否可能获得我使用意图启动的活动的引用?
如果不可能,根据您的经验,最好的方法是什么,要记住,我不能在onCreate上实施方法。该应用程序具有明确的流程,由类到类,并且相当大。

据我所知,您可以在已打开的活动(B活动)中执行以下操作:Intent callingIntent = getIntent() ,然后您可以运行以下代码 String activityName = callingIntent.getSimpleClassName() 来获取已打开的活动(A活动)的类名。 - Razgriz
@Razgriz 是的,但那对我有什么好处呢?我想要一个关于 Activity B 被 Activity A 打开的引用。我想要控制的是 Activity B,来自应用程序 A。 - Lind
修改问题以使其更加明确 - Lind
你是否已经检查了以下链接:https://dev59.com/fGMk5IYBdhLWcg3wtgMR? - Rany Albeg Wein
@RanyAlbegWein 我刚刚做了,问题是我不想从A引用B。我想要一个从B到A的引用。 - Lind
1个回答

2
我能获取我通过Intent启动的活动的引用吗?
不太可能。
所以我不想在创建信息时立即传递它,而是根据用户点击不同选项进行更改。
嗯,第二个活动要么存在,要么不存在。通常情况下,当用户在您的第一个活动(带有菜单的活动)中时,第二个活动不存在。在这种情况下,您别无选择,只能让第一个活动通过Intent extras告诉第二个活动该做什么,并让第二个活动解释这些extras。
如果第二个活动已经存在 - 而且您确信它已经存在 - 您可以使用事件总线之类的东西,让第一个活动发送消息,由第二个活动接收。
在任何情况下,您都需要修改第二个活动或子类化第二个活动,以处理这种活动间消息传递。

我认为这算是存在的,因为第二个活动是一个启动器。我希望第一个活动通过第二个活动已经实现的功能来控制第二个活动。 - Lind
+1 对于这个答案,至少现在我确认了对那个的引用是不可能的这个想法。 - Lind
@Lind:“我认为它算存在,因为第二个活动是一个启动器” - 这个可能存在。在某个地方调用startActivity()来引起实例的产生之前,这个实例将不会存在。现在,如果您的第二个活动直接被启动,然后通过某种形式的导航用户到达您的第一个活动,则该第二个活动类的实例可能存在。但是,如果用户通过不同的启动器(比如直接进入第一个活动)启动您的应用程序,则第二个活动的实例将不存在。 - CommonsWare
我同意并理解你的意思。但我认为基本上不可能,我目前正在从应用程序A的主要活动的onCreate中使用意图调用启动器的startActivity()。 - Lind
如果你处于这种情况下,你会建议什么方法?你会建议放弃这个想法,尝试不同的方法吗?如果是的话,你能指点我一个方向吗? - Lind
1
@Lind:除了我已经写过的内容,我没有更多的评论。一般来说,如果你想要整合两个东西,你需要愿意改变整合的双方。 - CommonsWare

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