Intent 类有 6 个构造函数
Intent()
Create an empty intent.
Intent(Intent o)
Copy constructor.
Intent(String action)
Create an intent with a given action.
Intent(String action, Uri uri)
Create an intent with a given action and for a given data url.
Intent(Context packageContext, Class cls)
Create an intent for a specific component.
Intent(String action, Uri uri, Context packageContext, Class cls)
Create an intent for a specific component with a specified action and data.
我几乎是 android 编程的新手,当我需要启动另一个 Activity
或 Fragment
时,我主要使用第五个:
Intent(Context packageContext, Class<?> cls)
当我想从 Fragment
启动一个 Activity
时,我会这样做:
Intent i = new Intent(getActivity(), DestinationActivity.class);
据我所知,getActivity()
将返回一个 Activity
但是构造函数需要一个Context
,这怎么可能???
是否可能因为 getActivity()
返回的 Activity
隐式调用 getApplicationContext()
???
最佳答案
仔细查看第五个 Intent 声明中的参数 Context
。它反射(reflect)了多态性。 Intent
采用 Context
参数,因此您可以传递任何属于 Context
或派生自 Context
类的对象.
Activity、AppCompatActivity、IntentService、Service 都派生自 Context
类,因此可以作为参数传递给方法。
关于android - Intent 构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970896/