我有一个图书馆计划和一个项目,分别用于我的某个应用程序的免费和付费版本。在图书馆项目中,我有一个'基础活动'。此“基本活动”必须根据是免费还是付费版本启动子活动。
我所做的就是在用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吗?
这种方法总体上还不错吗?
答案 0 :(得分:1)
是的,没关系。这个constructor采用Context扩展的第一个参数Activity。所以基本上你将参数传递为Context
而不是Activity
。
答案 1 :(得分:1)
很好。
Java会将第一个参数转换为Context(Activity extends Context),因此无关紧要。你也可以把Activity.this的getBaseContext()放在那里..
答案 2 :(得分:1)
当您创建新的Intent
时,您需要传递Context
和Activity
。
现在,上下文是一个允许应用程序访问某些资源的接口。
基本上在你的情况下,你正在传递一个上下文和活动,但你问是否需要传递baseActivity作为上下文。 所以基本上我认为因为Android开发者中的这一行:
Interface to global information about an application environment
您需要将基本活动作为上下文传递..
另一方面,subClasses可能是从baseClass继承的,所以上下文应该是相同的,但是当你将baseClass作为上下文传递时,它会更加可读和清晰。
有关Context的更多信息 http://developer.android.com/reference/android/content/Context.html