0

我有一个图书馆项目和一个项目,每个项目都用于我的一个应用程序的免费和付费版本。在图书馆项目中,我有一个“基本活动”。这个“基础活动”必须根据它是免费版还是付费版来启动子活动。

我所做的只是在使用 startActivity() 触发意图之前,我在“基本活动”中调用了一个方法,该方法必须返回该意图。我在我的“基本活动”子类(付费和免费版本)中覆盖了这个方法,并创建了这样的意图:

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

和:

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

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

这种方法总体可以吗?

4

3 回答 3

1

是的,没关系。此构造函数采用Activity扩展的第一个参数Context 。所以基本上你是在传递论点而不是作为.ContextActivity

于 2013-05-14T20:44:28.407 回答
1

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

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

基本上在你的情况下,你传递了一个上下文和活动,但是你问你是否需要将 baseActivity 作为上下文传递。所以基本上我认为是因为android开发人员中的这条线:

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

另一方面,子类可能继承自基类,因此上下文应该相同,但是当您将基类作为上下文传递时,它将更具可读性和清晰性。

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

于 2013-05-14T20:52:11.800 回答
1

没关系。

Java 会将第一个参数转换为 Context(Activity 扩展 Context),所以没关系。您也可以将 getBaseContext() 替换为 Activity.this 那里..

于 2013-05-14T20:49:31.760 回答