Alb*_*iir 2 android android-activity
我有一个欢迎屏幕可以作为我的应用程序中的第一个活动启动,或者它可以由用户花费时间的主要活动启动.我希望它从主屏幕启动时的行为略有不同(或者任何其他应用程序)或主要活动.
getCallingActivity()
无论调用什么活动,调用onCreate似乎总是返回null.这很奇怪,因为它确实更早发挥作用,这就是我如何找到字符串返回的格式(无论如何应该在文档中).我看不出会有什么影响它,因为在调用之前发生的唯一事情getCallingActivity()
是调用super.onCreate(savedInstanceState)
.我打电话给活动startActivityForResult(welcomeIntent, RESULT_WELCOME)
.
我究竟做错了什么?有没有其他方法来获取此信息?
这是一个已知问题:只有在同一任务中启动了活动时,getCallingActivity()才会返回实际数据(请参阅"任务和后退堆栈"教程).正确启动结果活动也是如此(它们不能是单实例,也不能使用"FLAG_ACTIVITY_NEW_TASK").
在Intent
使用的 with 中传递一个额外的值startActivityForResult()
,指示您想要哪种模式。通过getIntent().getXXXExtra()
(XXX
取决于您选择的数据类型)在onCreate()
新启动的活动中阅读额外内容。
小智 5
每个人似乎都指向相同的解决方案,但没有人用明确的语言表达。让我这样做。
似乎getCallingActivity()在不同的 android 平台上返回的结果不一致。
该问题可能是因为您将活动的launchMode设置为singleInstance或singleTask。将其设置为singleTop或将其保留为标准应该可以解决您的问题。当然,更改模式不应影响您的用例,因此这由您自行决定。
如果它确实影响您的用例,您可以在意图的附加内容中传递包名称以简化事情。
请注意,设置 singleInstance 或 singleTask会在Lollipop发布时返回非空结果。
归档时间: |
|
查看次数: |
8879 次 |
最近记录: |