Intent构造函数参数

ham*_*d_c 12 android android-intent android-fragments

Intent类有6个构造函数

意图()

创建一个空的意图.


意图(意图o)

复制构造函数.


意图(字符串动作)

使用给定操作创建意图.


意图(字符串动作,Uri uri)

使用给定操作和给定数据URL创建意图.


Intent(Context packageContext,Class cls)

为特定组件创建意图.


Intent(String action,Uri uri,Context packageContext,Class cls)

使用指定的操作和数据为特定组件创建意图.

我几乎是android编程的新手,当我需要启动另一个时,我大多使用第五个Activity或者Fragment:

Intent(Context packageContext, Class<?> cls)
Run Code Online (Sandbox Code Playgroud)

当我想Activity从一个开始,Fragment我这样做:

Intent i = new Intent(getActivity(), DestinationActivity.class);
Run Code Online (Sandbox Code Playgroud)

据我所知,getActivity()将返回一个Activity

但构造函数期望a Context,这怎么可能???

是否有可能因为Activity已经通过getActivity()隐式调用返回getApplicationContext()???

and*_*lic 6

Context在第五个Intent声明中非常仔细地看一下这个论点.它反映了多态性.在Intent需要Context的参数,所以你可以传递任何对象,它是一个Context或从派生Context类.

Activity,AppCompatActivity,IntentService,Service都派生自Context类,因此可以作为参数传递给方法.


Dan*_*ado 5

活动继承上下文。因此,如果你在一个活动中,你只需要传递自身来使用上下文。它还包含一个指向 getBaseContext() 的指针。如果您需要整个应用程序上下文,您可能偶尔需要引用它,但很可能暂时不需要。

您可以在此处找到有关 Activity 类的更多详细信息。

这个问题有关的意图构造函数的参数与你相似,有一个很好的答案。我想你想看看。

希望能帮助到你。