Intent构造函数的参数

Intent类有6个构造函数

意图()

创build一个空的意图。


意图(意图o)

复制构造函数。


意图(string行动)

用给定的动作创build一个意图。


意图(string行动,Uri uri)

用给定的动作和给定的数据url创build一个intent。


Intent(Context packageContext,Class cls)

为特定组件创build一个意图。


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

使用指定的操作和数据为特定组件创build一个意图。

我在android编程中几乎是新的,大多数时候使用第五个,当我需要启动另一个ActivityFragment

 Intent(Context packageContext, Class<?> cls) 

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

 Intent i = new Intent(getActivity(), DestinationActivity.class); 

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

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

是否有可能因为getActivity()返回的Activity隐式调用getApplicationContext()

  • 添加联系人意图不会返回ICS下的onActivityResult数据
  • Android深度链接 - 后退堆栈
  • 如何让我的Android应用程序出现在另一个特定应用程序的共享列表中
  • BroadcastReceiver试图在非有序广播期间返回结果 - 在Android中PACKAGE_ADDED
  • Android打开Waze和Google地图的意图
  • 以编程方式设置Intents类别
  • Android - 如何在Android应用中使用特定位置,缩放级别和标记启动Google地图意图
  • 用于相机的surfaceview在android lollipop os中不起作用
  • 在第五个意图声明中,请仔细看看Context 。 它反映了多态性。 Intent需要一个Context参数,所以你可以传递Context任何对象或从Context类派生的对象。

    Activity,AppCompatActivity,IntentService,Service都从Context类派生,因此可以作为parameter passing给方法。

    活动inheritance上下文。 因此,如果你在一个活动中,你只需要传递自己的使用上下文。 它还包含一个指向getBaseContext()的指针。 如果您需要整个应用程序上下文,您可能偶尔需要引用它,但最有可能的是您不会有一段时间。

    你可以在这里find关于Activity类的更多细节。

    这个关于意图构造函数参数的问题和你的类似,并且有一个非常好的答案。 我想你想看看。

    希望能帮助到你。

    活动扩展上下文,所以你可以投它:

     Intent i = new Intent((Context)getActivity(), DestinationActivity.class);