意图类有6个构造函数。
意图() 创造一个空洞的意图。
意图(意图o) 复制构造函数。
意图(字符串操作) 用给定的动作创建一个意图。
意图(字符串操作,Uri uri) 为给定的操作和给定的数据url创建一个意图。
意图(上下文packageContext,类cls) 为特定组件创建一个意图。
意图(字符串操作、uri Uri、上下文packageContext、类cls) 使用指定的操作和数据为特定组件创建意图。
我在android编程方面几乎是新手,当我需要启动另一个Activity或Fragment时,我通常使用第五个
Intent(Context packageContext, Class<?> cls)当我想从一个Activity启动Fragment时,我会这样做:
Intent i = new Intent(getActivity(), DestinationActivity.class);据我所知,getActivity()将返回一个Activity
但是构造函数需要一个Context,这怎么可能?
因为getActivity()返回的getActivity()隐式调用getApplicationContext()??
发布于 2015-08-12 16:46:07
仔细看一下第五个意图声明中的论点Context。它反映了多态性。Intent接受一个Context参数,这样您就可以传递任何Context对象或从Context类派生的对象。
Activity、AppCompatActivity、IntentService、Service都是从Context类派生的,因此可以作为参数传递给方法。
发布于 2015-08-12 16:59:37
活动继承上下文。因此,如果您在一个活动中,您只需要传递自身来使用上下文。它还包含指向getBaseContext()的指针。如果您需要整个应用程序上下文,您可能偶尔需要引用它,但很可能有一段时间您不会引用。
您可以找到有关活动类这里的更多详细信息。
这个关于意图构造函数参数的问题与您的类似,并且有一个非常好的答案。我想你想看看。
希望能帮上忙。
发布于 2015-08-12 16:45:30
活动扩展了上下文,因此您可以直接转换它:
Intent i = new Intent((Context)getActivity(), DestinationActivity.class);https://stackoverflow.com/questions/31970896
复制相似问题