这是一种创建意图的奇怪方法吗?

时间:2013-05-14 20:31:04

标签: android android-intent android-activity

我有一个图书馆计划和一个项目,分别用于我的某个应用程序的免费和付费版本。在图书馆项目中,我有一个'基础活动'。此“基本活动”必须根据是免费还是付费版本启动子活动。

我所做的就是在用startActivity()激活意图之前我在'Base Activity'中调用了一个必须返回intent的方法。我在我的'Base Activity'子类(付费版和免费版)中重写了这个方法并创建了这样的意图:

return new Intent(subClassOfBaseActivity.this, ChildClassA.class);

return new Intent(subClassOfBaseActivity.this, ChildClassB.class);

现在,我的问题是,可以通过传递subClassofBaseActivity.this而不是BaseActivity.this来创建intent吗?

这种方法总体上还不错吗?

3 个答案:

答案 0 :(得分:1)

是的,没关系。这个constructor采用Context扩展的第一个参数Activity。所以基本上你将参数传递为Context而不是Activity

答案 1 :(得分:1)

很好。

Java会将第一个参数转换为Context(Activity extends Context),因此无关紧要。你也可以把Activity.this的getBaseContext()放在那里..

答案 2 :(得分:1)

当您创建新的Intent时,您需要传递ContextActivity

现在,上下文是一个允许应用程序访问某些资源的接口。

基本上在你的情况下,你正在传递一个上下文和活动,但你问是否需要传递baseActivity作为上下文。 所以基本上我认为因为Android开发者中的这一行:

Interface to global information about an application environment您需要将基本活动作为上下文传递..

另一方面,subClasses可能是从baseClass继承的,所以上下文应该是相同的,但是当你将baseClass作为上下文传递时,它会更加可读和清晰。

有关Context的更多信息 http://developer.android.com/reference/android/content/Context.html