【问题标题】:Compare activity from getCallingActivity to another将 getCallingActivity 的活动与另一个活动进行比较
【发布时间】:2013-04-02 13:50:46
【问题描述】:

我想将调用活动与其他活动进行比较,以了解哪个活动调用了当前活动。我试过了:

getCallingActivity().getClassName().toString().equals(MainActivity.class.toString())

它不起作用,除了在调用Intent中传递一个值,我们如何使用getCallingActivity()getCallingPackage()比较类?

【问题讨论】:

  • 你有想过这个吗?
  • 嘿@JerecTheSith 你是怎么解决这个问题的?
  • 嘿 @HarinKaklotar 你可能想看看这个,我不记得我在 2013 年是怎么做到的:programcreek.com/java-api-examples/…
  • 感谢@JerecTheSith

标签: java android android-activity


【解决方案1】:

如果activity是从另一个activity启动的,你可以通过以下方式比较调用activity。

  if (getCallingActivity().getClassName().equals(MainActivity.class.getName())) {

            /* here the main activity is calling activity*/

     }else{

             /*other activity is calling activity*/
  }

【讨论】:

  • 嘿,我试试这个逻辑,但它给了我这样的扩展:尝试在空对象引用上调用虚拟方法'java.lang.String android.content.ComponentName.getClassName()'
  • 你开始活动是为了结果吗??如果不是,那么 getCallingActivity() 将返回 null 这将导致空指针
  • if (getCallingActivity().getClassName().equals(PlayerActivity.class.getCanonicalName())) 代码 = 100;否则 { 代码 = isPlaylist.equals("True") ? 100:200; } setResult(code, in);
  • 使用getName() 而不是getCanonicalName() 在这里查看区别stackoverflow.com/questions/15202997/…
  • 那么活动没有开始为结果。以startActivityForResult 开头,然后一切都会好起来的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多