我有一个图书馆项目和一个项目,每个项目为我的一个应用程序的免费和付费版本。在图书馆项目中,我有一个"基础活动"。这个"基础活动"必须启动子活动取决于它是免费还是付费版本。
我所做的是就在我用startActivity()触发意图之前,我调用了'Base Activity'中的一个方法,它必须返回意图。我在"Base Activity"子类(付费和免费版本)中重写了这个方法,并创建了这样的意图:
return new Intent(subClassOfBaseActivity.this, ChildClassA.class);
:
return new Intent(subClassOfBaseActivity.this, ChildClassB.class);
现在,我的问题是,它是ok的创建意图通过传递它subclasssofbaseactivity。这个代替BaseActivity。
吗?这个方法总体上ok吗?
当您创建一个新的Intent
时,您需要传递Context
和Activity
。
基本上在你的情况下,你正在传递一个context和activity,但是你问你是否需要传递baseActivity作为context。因为android developer:
这一行 Interface to global information about an application environment
你需要传递基本活动作为上下文。
另一方面,子类可能是从baseClass继承的,所以上下文应该是相同的,但是当你传递baseClass作为上下文时,它会更容易读和清晰。
查看有关上下文的更多信息http://developer.android.com/reference/android/content/Context.html
可以。这个构造函数接受Activity扩展的第一个参数Context。所以你传递的参数是Context
而不是Activity
没关系。
Java会将第一个参数强制转换为Context (Activity扩展Context),所以这无关紧要。你也可以用getBaseContext()代替Activity。这有. .