public class Fragment
extends Object
implements ComponentCallbacks, View.OnCreateContextMenuListener
java.lang.Object | |
↳ | android.support.v4.app.Fragment |
Known Direct Subclasses |
静态库支持版本的框架Fragment
。 用于编写在Android 3.0之前的平台上运行的应用程序。 在Android 3.0或更高版本上运行时,此实现仍在使用; 它不会尝试切换到框架的实现。 有关课程概述,请参阅框架Fragment
文档。
使用此支持版本而不是框架版本时的主要区别是:
FragmentActivity
getSupportFragmentManager()
to get the FragmentManager
Nested classes |
|
---|---|
class |
Fragment.InstantiationException 发生实例化失败时,由 |
class |
Fragment.SavedState 通过 |
Public constructors |
|
---|---|
Fragment() 默认的构造函数。 |
Public methods |
|
---|---|
void |
dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) 将片段的状态打印到给定的流中。 |
final boolean |
equals(Object o) 子类不能覆盖equals()。 |
final FragmentActivity |
getActivity() 返回该片段当前与之关联的 |
boolean |
getAllowEnterTransitionOverlap() 返回退出转换和输入转换是否重叠。 |
boolean |
getAllowReturnTransitionOverlap() 返回返回转换和重新输入转换是否重叠。 |
final Bundle |
getArguments() 返回片段实例化时提供的参数,如果有的话。 |
final FragmentManager |
getChildFragmentManager() 返回一个专用的FragmentManager,用于放置和管理这个Fragment中的碎片。 |
Context |
getContext() 返回该片段当前与之关联的 |
Object |
getEnterTransition() 返回将用于将Views移动到初始场景的Transition。 |
Object |
getExitTransition() 当不弹出背堆栈时,返回将用于将视图移出场景的过渡,当片段被移除,隐藏或分离时。 |
final FragmentManager |
getFragmentManager() 返回FragmentManager以与与该片段活动关联的片段进行交互。 |
final Object |
getHost() 返回这个片段的主机对象。 |
final int |
getId() 返回此片段已知的标识符。 |
LoaderManager |
getLoaderManager() 为这个片段返回LoaderManager,如果需要的话创建它。 |
final Fragment |
getParentFragment() 返回包含此片段的父片段。 |
Object |
getReenterTransition() 返回由于弹出背堆栈而返回的视图,以便将视图移动到场景中。 |
final Resources |
getResources() 返回 |
final boolean |
getRetainInstance() |
Object |
getReturnTransition() 当片段准备由于弹出背堆栈而被移除,隐藏或分离时,返回将用于将视图移出场景的Transition。 |
Object |
getSharedElementEnterTransition() 返回将用于传输到内容场景中的共享元素的转换。 |
Object |
getSharedElementReturnTransition() 返回将在返回堆栈弹出期间传回的共享元素的转换。 |
final String |
getString(int resId, Object... formatArgs) 从应用程序包的默认字符串表中返回一个本地化的格式化字符串,替换 |
final String |
getString(int resId) 从应用程序包的默认字符串表中返回一个本地化的字符串。 |
final String |
getTag() 获取片段的标签名称(如果指定)。 |
final Fragment |
getTargetFragment() 返回由 |
final int |
getTargetRequestCode() 返回由 |
final CharSequence |
getText(int resId) 从应用程序包的默认字符串表中返回一个本地化的,风格化的CharSequence。 |
boolean |
getUserVisibleHint() |
View |
getView() 获取片段布局的根视图(由 |
final int |
hashCode() 子类不能重写hashCode()。 |
static Fragment |
instantiate(Context context, String fname) 像 |
static Fragment |
instantiate(Context context, String fname, Bundle args) 用给定的类名创建一个Fragment的新实例。 |
final boolean |
isAdded() 如果片段当前被添加到其活动中,则返回true。 |
final boolean |
isDetached() 如果片段已从UI中明确分离,则返回true。 |
final boolean |
isHidden() 如果片段已隐藏,则返回true。 |
final boolean |
isInLayout() 如果通过<fragment>标签将布局作为活动视图层次结构的一部分包含在内,则返回true。 |
final boolean |
isRemoving() 如果此片段当前正从其活动中移除,则返回true。 |
final boolean |
isResumed() 如果片段处于恢复状态,则返回true。 |
final boolean |
isVisible() 如果片段当前对用户可见,则返回true。 |
void |
onActivityCreated(Bundle savedInstanceState) 当片段的活动已经创建并且该片段的视图层次被实例化时调用。 |
void |
onActivityResult(int requestCode, int resultCode, Intent data) 从先前的电话 |
void |
onAttach(Activity activity) 此方法已弃用。 见 |
void |
onAttach(Context context) 当片段首次附加到其上下文时调用。 |
void |
onAttachFragment(Fragment childFragment) 当片段附加为此片段的子元素时调用。 |
void |
onConfigurationChanged(Configuration newConfig) 设备配置在组件运行时发生更改时由系统调用。 |
boolean |
onContextItemSelected(MenuItem item) 只要选择了上下文菜单中的项目,就会调用该钩子。 |
void |
onCreate(Bundle savedInstanceState) 被调用来做一个片段的初始创建。 |
Animation |
onCreateAnimation(int transit, boolean enter, int nextAnim) 当片段加载动画时调用。 |
void |
onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 当即将显示 |
void |
onCreateOptionsMenu(Menu menu, MenuInflater inflater) 初始化Fragment主机的标准选项菜单的内容。 |
View |
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 调用以使片段实例化其用户界面视图。 |
void |
onDestroy() 当碎片不再使用时调用。 |
void |
onDestroyOptionsMenu() 当此片段的选项菜单项不再包含在总体选项菜单中时调用。 |
void |
onDestroyView() 当先前由 |
void |
onDetach() 当片段不再附加到其活动时调用。 |
void |
onHiddenChanged(boolean hidden) 当隐藏状态(由片段的 |
void |
onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) 此方法已弃用。 见 |
void |
onInflate(Context context, AttributeSet attrs, Bundle savedInstanceState) 当片段被创建为视图布局膨胀的一部分时调用,通常通过设置活动的内容视图来调用。 |
void |
onLowMemory() 这在整个系统内存不足时调用,并且主动运行的进程应该修剪内存使用情况。 |
void |
onMultiWindowModeChanged(boolean isInMultiWindowMode) 当片段的活动从全屏模式更改为多窗口模式时调用,反之亦然。 |
boolean |
onOptionsItemSelected(MenuItem item) 只要选择了选项菜单中的项目,就会调用该钩子。 |
void |
onOptionsMenuClosed(Menu menu) 只要选项菜单被关闭(通过用户使用后退/菜单按钮取消菜单,或选择某个项目时),就会调用该钩子。 |
void |
onPause() 当碎片不再恢复时调用。 |
void |
onPictureInPictureModeChanged(boolean isInPictureInPictureMode) 当活动从画中画模式切换到画中画模式时由系统调用。 |
void |
onPrepareOptionsMenu(Menu menu) 准备要显示的Fragment主机的标准选项菜单。 |
void |
onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) 从请求权限回调结果。 |
void |
onResume() 当片段对用户可见且正在积极运行时调用。 |
void |
onSaveInstanceState(Bundle outState) 打电话询问片段以保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。 |
void |
onStart() 当片段对用户可见时调用。 |
void |
onStop() 当片段不再启动时调用。 |
void |
onViewCreated(View view, Bundle savedInstanceState) 在 |
void |
onViewStateRestored(Bundle savedInstanceState) 当所有保存的状态已恢复到片段的视图层次结构中时调用。 |
void |
registerForContextMenu(View view) 为给定视图注册一个上下文菜单(多个视图可以显示上下文菜单)。 |
final void |
requestPermissions(String[] permissions, int requestCode) 请求授予此应用程序的权限。 |
void |
setAllowEnterTransitionOverlap(boolean allow) 设置退出转换和输入转换是否重叠。 |
void |
setAllowReturnTransitionOverlap(boolean allow) 设置返回转换和重新输入转换是否重叠。 |
void |
setArguments(Bundle args) 为此片段提供构造参数。 |
void |
setEnterSharedElementCallback(SharedElementCallback callback) 当使用Fragments使用自定义转换时,当此片段在未弹出返回堆栈时连接或分离时,会调用enter转换回调。 |
void |
setEnterTransition(Object transition) 设置将用于将Views移动到初始场景的Transition。 |
void |
setExitSharedElementCallback(SharedElementCallback callback) 当自定义转换与碎片一起使用时,退出转换回调在弹出回栈时附加或分离时调用。 |
void |
setExitTransition(Object transition) 设置当片段被移除,隐藏或在未弹出背堆栈时分离时将用于将视图移出场景的Transition。 |
void |
setHasOptionsMenu(boolean hasMenu) 报告此片段希望通过接收对 |
void |
setInitialSavedState(Fragment.SavedState state) 设置此片段应该从第一次构建时恢复的初始保存状态,由 |
void |
setMenuVisibility(boolean menuVisible) 设置该片段的菜单是否可见。 |
void |
setReenterTransition(Object transition) 设置用于在由于弹出背堆栈而返回时将Views移动到场景中的Transition。 |
void |
setRetainInstance(boolean retain) 控制是否在重新创建Activity时(例如从配置更改)保留片段实例。 |
void |
setReturnTransition(Object transition) 设置当片段准备由于弹出背堆栈而被移除,隐藏或分离时将用于将视图移出场景的Transition。 |
void |
setSharedElementEnterTransition(Object transition) 设置将用于共享元素转移到内容场景的转换。 |
void |
setSharedElementReturnTransition(Object transition) 设置将在回弹堆栈弹出期间回传的共享元素的转换。 |
void |
setTargetFragment(Fragment fragment, int requestCode) 此片段的可选目标。 |
void |
setUserVisibleHint(boolean isVisibleToUser) 为系统提供一个关于此片段的用户界面当前是否可见的提示。 |
boolean |
shouldShowRequestPermissionRationale(String permission) 获取是否应该以请求许可的理由显示UI。 |
void |
startActivity(Intent intent) 从片段的Activity中调用 |
void |
startActivity(Intent intent, Bundle options) 从片段的Activity中调用 |
void |
startActivityForResult(Intent intent, int requestCode) 从片段的Activity中调用 |
void |
startActivityForResult(Intent intent, int requestCode, Bundle options) 从片段的Activity中调用 |
void |
startIntentSenderForResult(IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) 从片段的Activity中调用 |
String |
toString() 返回对象的字符串表示形式。 |
void |
unregisterForContextMenu(View view) 防止为给定视图显示上下文菜单。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.content.ComponentCallbacks
|
|
From interface android.view.View.OnCreateContextMenuListener
|
Fragment ()
默认的构造函数。 每个片段必须有一个空构造函数,因此可以在恢复其活动状态时实例化它。 强烈建议子类没有带参数的其他构造函数,因为这些构造函数在重新实例化时不会被调用; 相反,参数可以由呼叫者与供给setArguments(Bundle)
后来由片段与检索getArguments()
。
应用程序通常不应该实现构造函数。 第一个应用程序代码片段准备好使用的运行在onAttach(Activity)
,片段实际上与其活动相关联的点。 某些应用程序可能还希望实现onInflate(Activity, AttributeSet, Bundle)
以从布局资源中检索属性,但应该注意这一点,因为这是因为片段附加到其活动而发生的。
void dump (String prefix, FileDescriptor fd, PrintWriter writer, String[] args)
将片段的状态打印到给定的流中。
Parameters | |
---|---|
prefix |
String : Text to print at the front of each line. |
fd |
FileDescriptor : The raw file descriptor that the dump is being sent to. |
writer |
PrintWriter : The PrintWriter to which you should dump your state. This will be closed for you after you return. |
args |
String : additional arguments to the dump request. |
boolean equals (Object o)
子类不能覆盖equals()。
Parameters | |
---|---|
o |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
FragmentActivity getActivity ()
返回FragmentActivity
这个片段目前与之相关联。 如果片段与Context
相关联,则可能会返回null
。
Returns | |
---|---|
FragmentActivity |
boolean getAllowEnterTransitionOverlap ()
返回退出转换和输入转换是否重叠。 如果属实,则输入转换将尽快开始。 如果为false,则输入转换将等到退出转换完成后再开始。
Returns | |
---|---|
boolean |
true when the enter transition should start as soon as possible or false to when it should wait until the exiting transition completes. |
boolean getAllowReturnTransitionOverlap ()
返回返回转换和重新输入转换是否重叠。 如果属实,重新进入过渡将尽快开始。 如果为false,则重新输入转换将等到返回转换完成后再开始。
Returns | |
---|---|
boolean |
true to start the reenter transition when possible or false to wait until the return transition completes. |
FragmentManager getChildFragmentManager ()
返回一个专用的FragmentManager,用于放置和管理这个Fragment中的碎片。
Returns | |
---|---|
FragmentManager |
Object getEnterTransition ()
返回将用于将Views移动到初始场景的Transition。 进入的视图将是那些有isTransitionGroup()
返回true的常规Views或ViewGroup。 典型的转换将延伸Visibility
因为进入受INVISIBLE
到VISIBLE
可见性控制。
Returns | |
---|---|
Object |
the Transition to use to move Views into the initial Scene. |
Object getExitTransition ()
当不弹出背堆栈时,返回将用于将视图移出场景的过渡,当片段被移除,隐藏或分离时。 退出的视图将是那些具有isTransitionGroup()
常规视图或视图组返回true。 典型的转换将延长Visibility
因为退出是由VISIBLE
到INVISIBLE
可见性所控制。 如果转换为空,视图将保持不受影响。
Returns | |
---|---|
Object |
the Transition to use to move Views out of the Scene when the Fragment is being closed not due to popping the back stack. |
FragmentManager getFragmentManager ()
返回FragmentManager以与与该片段活动关联的片段进行交互。 请注意,在getActivity()
之前,这段时间是非空的,在这段时间内将片段放入FragmentTransaction
直到它被提交并附加到它的活动。
如果此片段是另一个片段的孩子,则返回的片段管理器将是父级的 getChildFragmentManager()
。
Returns | |
---|---|
FragmentManager |
int getId ()
返回此片段已知的标识符。 这可以是布局中提供的android:id值,也可以是添加片段时提供的容器视图ID。
Returns | |
---|---|
int |
LoaderManager getLoaderManager ()
为这个片段返回LoaderManager,如果需要的话创建它。
Returns | |
---|---|
LoaderManager |
Fragment getParentFragment ()
返回包含此片段的父片段。 如果此片段直接附加到Activity,则返回null。
Returns | |
---|---|
Fragment |
Object getReenterTransition ()
返回由于弹出背堆栈而返回的视图,以便将视图移动到场景中。 进入的视图将是那些有isTransitionGroup()
返回true的常规Views或ViewGroup。 典型的过渡将延伸Visibility
由于退出是通过改变从能见度管辖VISIBLE
到INVISIBLE
。 如果转换为空,视图将保持不受影响。 如果没有设置,默认情况下将使用与setExitTransition(Object)
相同的转换。
Returns | |
---|---|
Object |
the Transition to use to move Views into the scene when reentering from a previously-started Activity. |
boolean getRetainInstance ()
Returns | |
---|---|
boolean |
Object getReturnTransition ()
当片段准备由于弹出背堆栈而被移除,隐藏或分离时,返回将用于将视图移出场景的Transition。 退出的视图将是isTransitionGroup()
返回true的常规Views或ViewGroup。 典型的转换将延长Visibility
因为输入受到从VISIBLE
到INVISIBLE
可见性的控制。 如果transition
为空,输入视图将不受影响。
Returns | |
---|---|
Object |
the Transition to use to move Views out of the Scene when the Fragment is preparing to close. |
Object getSharedElementEnterTransition ()
返回将用于传输到内容场景中的共享元素的转换。 典型的转换会影响大小和位置,例如ChangeBounds
。 空值将导致转移的共享元素闪烁到最终位置。
Returns | |
---|---|
Object |
The Transition to use for shared elements transferred into the content Scene. |
Object getSharedElementReturnTransition ()
返回将在返回堆栈弹出期间传回的共享元素的转换。 这个转变在离开片段中起作用。 典型的过渡将影响大小和位置,例如ChangeBounds
。 空值将导致转移的共享元素闪烁到最终位置。 如果未设置任何值,则默认值将使用与setSharedElementEnterTransition(Object)
相同的值。
Returns | |
---|---|
Object |
The Transition to use for shared elements transferred out of the content Scene. |
String getString (int resId, Object... formatArgs)
从应用程序包的默认字符串表中返回一个本地化的格式化字符串,替换 Formatter
和 format(String, Object...)
定义的格式参数。
Parameters | |
---|---|
resId |
int : Resource id for the format string |
formatArgs |
Object : The format arguments that will be used for substitution. |
Returns | |
---|---|
String |
String getString (int resId)
从应用程序包的默认字符串表中返回一个本地化的字符串。
Parameters | |
---|---|
resId |
int : Resource id for the string |
Returns | |
---|---|
String |
Fragment getTargetFragment ()
返回由 setTargetFragment(Fragment, int)
设置的目标片段。
Returns | |
---|---|
Fragment |
int getTargetRequestCode ()
返回由 setTargetFragment(Fragment, int)
设置的目标请求代码。
Returns | |
---|---|
int |
CharSequence getText (int resId)
从应用程序包的默认字符串表中返回一个本地化的,风格化的CharSequence。
Parameters | |
---|---|
resId |
int : Resource id for the CharSequence text |
Returns | |
---|---|
CharSequence |
boolean getUserVisibleHint ()
Returns | |
---|---|
boolean |
The current value of the user-visible hint on this fragment. |
也可以看看:
View getView ()
如果提供,获取片段布局的根视图(由 onCreateView(LayoutInflater, ViewGroup, Bundle)
返回的视图)。
Returns | |
---|---|
View |
The fragment's root view, or null if it has no layout. |
int hashCode ()
子类不能重写hashCode()。
Returns | |
---|---|
int |
a hash code value for this object. |
Fragment instantiate (Context context, String fname)
像 instantiate(Context, String, Bundle)
一样,但有一个空参数Bundle。
Parameters | |
---|---|
context |
Context
|
fname |
String
|
Returns | |
---|---|
Fragment |
Fragment instantiate (Context context, String fname, Bundle args)
用给定的类名创建一个Fragment的新实例。 这与调用它的空构造函数相同。
Parameters | |
---|---|
context |
Context : The calling context being used to instantiate the fragment. This is currently just used to get its ClassLoader. |
fname |
String : The class name of the fragment to instantiate. |
args |
Bundle : Bundle of arguments to supply to the fragment, which it can retrieve with getArguments() . May be null. |
Returns | |
---|---|
Fragment |
Returns a new fragment instance. |
Throws | |
---|---|
InstantiationException |
If there is a failure in instantiating the given fragment class. This is a runtime exception; it is not normally expected to happen. |
boolean isAdded ()
如果片段当前被添加到其活动中,则返回true。
Returns | |
---|---|
boolean |
boolean isDetached ()
如果片段已从UI中明确分离,则返回true。 也就是说,已经使用了FragmentTransaction.detach(Fragment)
。
Returns | |
---|---|
boolean |
boolean isHidden ()
如果片段已隐藏,则返回true。 默认显示片段。 您可以通过onHiddenChanged(boolean)
了解有关此状态的更改。 请注意,隐藏状态与其他状态正交 - 也就是说,要让用户看到,片段必须同时启动而不是隐藏。
Returns | |
---|---|
boolean |
boolean isInLayout ()
如果通过<fragment>标签将布局作为活动视图层次结构的一部分包含在内,则返回true。 当通过<fragment>标签创建片段时, 除非旧片段从先前状态恢复并且不出现在当前状态的布局中, 否则这将始终为真。
Returns | |
---|---|
boolean |
boolean isRemoving ()
如果此片段当前正从其活动中移除,则返回true。 这不是它的活动是否完成,而是它是否正在从其活动中移除。
Returns | |
---|---|
boolean |
boolean isVisible ()
如果片段当前对用户可见,则返回true。 这意味着:(1)已被添加,(2)将其视图附加到窗口,并且(3)不被隐藏。
Returns | |
---|---|
boolean |
void onActivityCreated (Bundle savedInstanceState)
当片段的活动已经创建并且该片段的视图层次被实例化时调用。 一旦这些部分到位,它就可以用来进行最终的初始化,例如检索视图或恢复状态。 对于使用setRetainInstance(boolean)
来保留其实例的片段也很有用,因为此回调告诉片段何时与新活动实例完全关联。 这是在onCreateView(LayoutInflater, ViewGroup, Bundle)
之后和onViewStateRestored(Bundle)
之前调用的。
Parameters | |
---|---|
savedInstanceState |
Bundle : If the fragment is being re-created from a previous saved state, this is the state. |
void onActivityResult (int requestCode, int resultCode, Intent data)
从先前的电话startActivityForResult(Intent, int)
接收结果。 这遵循onActivityResult(int, int, Intent)
描述的相关活动API。
Parameters | |
---|---|
requestCode |
int : The integer request code originally supplied to startActivityForResult(), allowing you to identify who this result came from. |
resultCode |
int : The integer result code returned by the child activity through its setResult(). |
data |
Intent : An Intent, which can return result data to the caller (various data can be attached to Intent "extras"). |
void onAttach (Activity activity)
此方法已弃用。
见onAttach(Context)
。
当片段首次附加到其活动时调用。 此后将会调用onCreate(Bundle)
。
Parameters | |
---|---|
activity |
Activity
|
void onAttach (Context context)
当片段首次附加到其上下文时调用。 此后将调用onCreate(Bundle)
。
Parameters | |
---|---|
context |
Context
|
void onAttachFragment (Fragment childFragment)
当片段附加为此片段的子元素时调用。
这是连接片段的后称为 onAttach
之前所连接的片段的 onCreate
如果片段尚未有先前调用 onCreate
。
Parameters | |
---|---|
childFragment |
Fragment : child fragment being attached |
void onConfigurationChanged (Configuration newConfig)
设备配置在组件运行时发生更改时由系统调用。 请注意,与活动不同,当配置更改时,其他组件不会重新启动:它们必须始终处理更改的结果,例如通过重新获取资源。
在调用此函数时,您的Resources对象将被更新为返回与新配置相匹配的资源值。
欲了解更多信息,请阅读 Handling Runtime Changes 。
Parameters | |
---|---|
newConfig |
Configuration : The new device configuration. |
boolean onContextItemSelected (MenuItem item)
只要选择了上下文菜单中的项目,就会调用该钩子。 默认实现简单地返回false以进行正常处理(调用项目的Runnable或者根据需要向其处理程序发送消息)。 您可以将此方法用于您想要在没有其他设施的情况下进行处理的任何物品。
使用 getMenuInfo()
可以获取添加此菜单项的视图设置的额外信息。
派生类应该调用基类来执行默认的菜单处理。
Parameters | |
---|---|
item |
MenuItem : The context menu item that was selected. |
Returns | |
---|---|
boolean |
boolean Return false to allow normal context menu processing to proceed, true to consume it here. |
void onCreate (Bundle savedInstanceState)
被调用来做一个片段的初始创建。 这是在onAttach(Activity)
之后和onCreateView(LayoutInflater, ViewGroup, Bundle)
之前调用的。
请注意,这可以在片段的活动仍处于创建过程中时调用。 因此,您不能依赖于此时正在初始化活动的内容视图层次结构。 如果您想在创建活动本身后进行工作,请参阅onActivityCreated(Bundle)
。
任何已恢复的子片段将在基本 Fragment.onCreate
方法返回之前创建。
Parameters | |
---|---|
savedInstanceState |
Bundle : If the fragment is being re-created from a previous saved state, this is the state. |
Animation onCreateAnimation (int transit, boolean enter, int nextAnim)
当片段加载动画时调用。
Parameters | |
---|---|
transit |
int
|
enter |
boolean
|
nextAnim |
int
|
Returns | |
---|---|
Animation |
void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
当即将显示view
的上下文菜单时调用。 与onCreateOptionsMenu(Menu, MenuInflater)
不同,这将在每次上下文菜单即将显示时调用,并且应该为视图(或AdapterView
子类的视图中的项目,可在menuInfo
找到)填充。
使用 onContextItemSelected(android.view.MenuItem)
来了解何时选择了一个项目。
默认实现调用最高为 Activity.onCreateContextMenu
,但如果不需要该行为,则不能调用此实现。
在此方法返回后,保持上下文菜单是不安全的。 在构建此视图的上下文菜单时调用。 此方法返回后,保持菜单不安全。
Parameters | |
---|---|
menu |
ContextMenu : The context menu that is being built |
v |
View : The view for which the context menu is being built |
menuInfo |
ContextMenu.ContextMenuInfo : Extra information about the item for which the context menu should be shown. This information will vary depending on the class of v. |
void onCreateOptionsMenu (Menu menu, MenuInflater inflater)
初始化Fragment主机的标准选项菜单的内容。 您应该将菜单项放入菜单中 。 要调用此方法,您必须首先调用setHasOptionsMenu(boolean)
。 有关更多信息,请参阅Activity.onCreateOptionsMenu
。
Parameters | |
---|---|
menu |
Menu : The options menu in which you place your items. |
inflater |
MenuInflater
|
View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
调用以使片段实例化其用户界面视图。 这是可选的,非图形片段可以返回null(这是默认实现)。 这将在onCreate(Bundle)
和onActivityCreated(Bundle)
之间调用。
如果您从这里返回一个视图,那么稍后将在视图被释放时在 onDestroyView()
调用。
Parameters | |
---|---|
inflater |
LayoutInflater : The LayoutInflater object that can be used to inflate any views in the fragment, |
container |
ViewGroup : If non-null, this is the parent view that the fragment's UI should be attached to. The fragment should not add the view itself, but this can be used to generate the LayoutParams of the view. |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed from a previous saved state as given here. |
Returns | |
---|---|
View |
Return the View for the fragment's UI, or null. |
void onDestroyOptionsMenu ()
当此片段的选项菜单项不再包含在总体选项菜单中时调用。 接收此调用意味着菜单需要重建,但是此片段的项目未包含在新建菜单中(未调用其onCreateOptionsMenu(Menu, MenuInflater)
)。
void onDestroyView ()
当以前由onCreateView(LayoutInflater, ViewGroup, Bundle)
创建的视图已从片段中分离时调用。 下次需要显示片段时,将创建一个新视图。 这是在onStop()
之后和onDestroy()
之前调用的。 无论它被称为onCreateView(LayoutInflater, ViewGroup, Bundle)
返回一个非空的观点。 内部它在视图的状态被保存之后但在它的父对象被移除之前被调用。
void onHiddenChanged (boolean hidden)
当隐藏状态(由片段的 isHidden()
返回)发生变化时调用。碎片从隐藏状态开始;只要碎片从状态改变状态就会调用碎片。
Parameters | |
---|---|
hidden |
boolean : True if the fragment is now hidden, false if it is not visible. |
void onInflate (Activity activity, AttributeSet attrs, Bundle savedInstanceState)
此方法已弃用。
见onInflate(Context, AttributeSet, Bundle)
。
当片段被创建为视图布局膨胀的一部分时调用,通常通过设置活动的内容视图来调用。
Parameters | |
---|---|
activity |
Activity
|
attrs |
AttributeSet
|
savedInstanceState |
Bundle
|
void onInflate (Context context, AttributeSet attrs, Bundle savedInstanceState)
当片段被创建为视图布局膨胀的一部分时调用,通常通过设置活动的内容视图来调用。 这可能会在从a创建片段后立即调用
onAttach(Activity)
被调用之前;
你所要做的就是解析这些属性并将它们保存起来。
这被称为每次碎片被充气时,即使它正在充气到具有保存状态的新实例。 每次重新解析参数通常都是有意义的,以允许它们以不同的配置进行更改。
下面是一个片段的典型实现,它可以通过此处提供的属性以及从 getArguments()
获取参数:
public static class MyFragment extends Fragment { CharSequence mLabel; /** * Create a new instance of MyFragment that will be initialized * with the given arguments. */ static MyFragment newInstance(CharSequence label) { MyFragment f = new MyFragment(); Bundle b = new Bundle(); b.putCharSequence("label", label); f.setArguments(b); return f; } /** * Parse attributes during inflation from a view hierarchy into the * arguments we handle. */ @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(activity, attrs, savedInstanceState); TypedArray a = activity.obtainStyledAttributes(attrs, R.styleable.FragmentArguments); mLabel = a.getText(R.styleable.FragmentArguments_android_label); a.recycle(); } /** * During creation, if arguments have been supplied to the fragment * then parse those out. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); if (args != null) { mLabel = args.getCharSequence("label", mLabel); } } /** * Create the view for this fragment, using the arguments given to it. */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.hello_world, container, false); View tv = v.findViewById(R.id.text); ((TextView)tv).setText(mLabel != null ? mLabel : "(no label)"); tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb)); return v; } }
请注意,解析XML属性使用“样式”资源。 这里使用的styleable的声明是:
<declare-styleable name="FragmentArguments"> <attr name="android:label" /> </declare-styleable>
然后可以通过像这样的标签在其活动的内容布局中声明片段:
<fragment class="com.example.android.apis.app.FragmentArguments$MyFragment" android:id="@+id/embedded" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:label="@string/fragment_arguments_embedded" />
这个片段也可以从运行时在参数Bundle中给出的参数动态创建; 这是创建包含活动时的一个例子:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_arguments); if (savedInstanceState == null) { // First-time init; create fragment to embed in activity. FragmentTransaction ft = getFragmentManager().beginTransaction(); Fragment newFragment = MyFragment.newInstance("From Arguments"); ft.add(R.id.created, newFragment); ft.commit(); } }
Parameters | |
---|---|
context |
Context : The Activity that is inflating this fragment. |
attrs |
AttributeSet : The attributes at the tag where the fragment is being created. |
savedInstanceState |
Bundle : If the fragment is being re-created from a previous saved state, this is the state. |
void onLowMemory ()
这在整个系统内存不足时调用,并且主动运行的进程应该修剪内存使用情况。 虽然没有定义它的确切位置,但通常会在所有后台进程都被终止时发生。 也就是说,在达到托管服务和前台UI的杀死进程之前,我们希望避免杀死。
你应该实现这个方法来释放你可能持有的任何缓存或其他不必要的资源。 系统将从此方法返回后为您执行垃圾回收。
优选地,您应该根据ComponentCallbacks2
实施onTrimMemory(int)
,以基于不同级别的内存需求逐步卸载资源。 该API可用于API级别14和更高的,所以你应该只使用这个onLowMemory()
方法,旧版本的回退,可以治疗一样onTrimMemory(int)
与TRIM_MEMORY_COMPLETE
水平。
void onMultiWindowModeChanged (boolean isInMultiWindowMode)
当片段的活动从全屏模式更改为多窗口模式时调用,反之亦然。 这通常与包含Activity的onMultiWindowModeChanged(boolean)
相关联。
Parameters | |
---|---|
isInMultiWindowMode |
boolean : True if the activity is in multi-window mode. |
boolean onOptionsItemSelected (MenuItem item)
只要选择了选项菜单中的项目,就会调用该钩子。 默认实现简单地返回false以进行正常处理(调用项目的Runnable或者根据需要向其处理程序发送消息)。 您可以将此方法用于您想要在没有其他设施的情况下进行处理的任何物品。
派生类应该调用基类来执行默认的菜单处理。
Parameters | |
---|---|
item |
MenuItem : The menu item that was selected. |
Returns | |
---|---|
boolean |
boolean Return false to allow normal menu processing to proceed, true to consume it here. |
void onOptionsMenuClosed (Menu menu)
只要选项菜单被关闭(通过用户使用后退/菜单按钮取消菜单,或选择某个项目时),就会调用该钩子。
Parameters | |
---|---|
menu |
Menu : The options menu as last shown or first initialized by onCreateOptionsMenu(). |
void onPictureInPictureModeChanged (boolean isInPictureInPictureMode)
当活动从画中画模式切换到画中画模式时由系统调用。 这通常与包含Activity的onPictureInPictureModeChanged(boolean)
相关联。
Parameters | |
---|---|
isInPictureInPictureMode |
boolean : True if the activity is in picture-in-picture mode. |
void onPrepareOptionsMenu (Menu menu)
准备要显示的Fragment主机的标准选项菜单。 在菜单显示之前,每当显示菜单时都会调用它。 您可以使用此方法高效地启用/禁用项目或以其他方式动态修改内容。 有关更多信息,请参阅Activity.onPrepareOptionsMenu
。
Parameters | |
---|---|
menu |
Menu : The options menu as last shown or first initialized by onCreateOptionsMenu(). |
void onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)
从请求权限回调结果。 对于requestPermissions(String[], int)
上的每个调用都会调用此方法。
注意:与用户的权限请求交互可能会中断。 在这种情况下,您将收到空权限和结果数组,这些数据应视为取消。
Parameters | |
---|---|
requestCode |
int : The request code passed in requestPermissions(String[], int) . |
permissions |
String : The requested permissions. Never null. |
grantResults |
int : The grant results for the corresponding permissions which is either PERMISSION_GRANTED or PERMISSION_DENIED . Never null. |
void onSaveInstanceState (Bundle outState)
打电话询问片段以保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。 如果片段的新实例后需要创建,您的包放在这里的数据将提供给包可onCreate(Bundle)
, onCreateView(LayoutInflater, ViewGroup, Bundle)
,并onActivityCreated(Bundle)
。
这对应于Activity.onSaveInstanceState(Bundle)
,这里的大多数讨论也适用于此。 但请注意: 此方法可能会在onDestroy()
之前随时调用 。 有很多情况下,碎片可能大部分被拆除(例如,当放置在背堆栈上而没有UI显示时),但是它的状态不会被保存直到其拥有的活动实际上需要保存其状态。
Parameters | |
---|---|
outState |
Bundle : Bundle in which to place your saved state. |
void onViewCreated (View view, Bundle savedInstanceState)
在onCreateView(LayoutInflater, ViewGroup, Bundle)
已返回之后立即调用,但在任何已保存的状态已恢复到视图之前。 这让子类有机会在知道其视图层次已完全创建后自行初始化。 此时片段的视图层次不会附加到其父项。
Parameters | |
---|---|
view |
View : The View returned by onCreateView(LayoutInflater, ViewGroup, Bundle) . |
savedInstanceState |
Bundle : If non-null, this fragment is being re-constructed from a previous saved state as given here. |
void onViewStateRestored (Bundle savedInstanceState)
当所有保存的状态已恢复到片段的视图层次结构中时调用。 这可以用来根据保存的状态来进行初始化,您可以让视图层次结构自行跟踪,比如当前是否检查复选框小部件。 这是在onActivityCreated(Bundle)
之后和onStart()
之前调用的。
Parameters | |
---|---|
savedInstanceState |
Bundle : If the fragment is being re-created from a previous saved state, this is the state. |
void registerForContextMenu (View view)
为给定视图注册一个上下文菜单(多个视图可以显示上下文菜单)。 此方法将视图上的View.OnCreateContextMenuListener
设置为该片段,因此将在显示上下文菜单时调用onCreateContextMenu(ContextMenu, View, ContextMenuInfo)
。
Parameters | |
---|---|
view |
View : The view that should show a context menu. |
void requestPermissions (String[] permissions, int requestCode)
请求授予此应用程序的权限。 这些权限必须在清单中请求,它们不应被授予您的应用程序,并且它们应该具有保护级别#PROTECTION_DANGEROUS dangerous
,而不管它们是由平台还是由第三方应用程序声明。
正常权限PROTECTION_NORMAL
在安装时根据清单中的请求被授予。 签名权限PROTECTION_SIGNATURE
在安装时根据清单中的请求被授予,并且您的应用的签名与声明权限的应用的签名匹配。
如果您的应用程序没有请求的权限,用户将看到用户界面接受它们。 在用户接受或拒绝了所请求的权限后,您将收到onRequestPermissionsResult(int, String[], int[])
报告的回调,报告权限是否被授予。
请注意,请求权限并不能保证它将被授予,并且您的应用程序应该能够在没有此权限的情况下运行。
此方法可能会启动一项活动,允许用户选择授予哪些权限以及拒绝哪些权限。 因此,您应该准备好您的活动可能会暂停并恢复。 此外,授予某些权限可能需要重新启动应用程序。 在这种情况下,系统会在将结果发送到onRequestPermissionsResult(int, String[], int[])
之前重新创建活动堆栈。
在检查您是否有权 checkSelfPermission(String)
您应该使用 checkSelfPermission(String)
。
调用此API以获得已授予您应用程序的权限将向用户显示UI,以决定应用程序是否仍可以拥有这些权限。 如果您的应用程序使用受权限更改保护的数据的方式显着,这可能很有用。
示例权限请求如下所示:
private void showContacts(){if(getActivity()。checkSelfPermission(Manifest.permission.READ_CONTACTS)!= PackageManager.PERMISSION_GRANTED){requestPermissions(new String [] {Manifest.permission.READ_CONTACTS},PERMISSIONS_REQUEST_READ_CONTACTS); } else {doShowContacts(); }} @Override public void onRequestPermissionsResult(int requestCode,String [] permissions,int [] grantResults){if(requestCode == PERMISSIONS_REQUEST_READ_CONTACTS && grantResults [0] == PackageManager.PERMISSION_GRANTED){doShowContacts(); }}
Parameters | |
---|---|
permissions |
String : The requested permissions. |
requestCode |
int : Application specific request code to match with a result reported to onRequestPermissionsResult(int, String[], int[]) . |
void setAllowEnterTransitionOverlap (boolean allow)
设置退出转换和输入转换是否重叠。 如果属实,则输入转换将尽快开始。 如果为false,则输入转换将等到退出转换完成后再开始。
Parameters | |
---|---|
allow |
boolean : true to start the enter transition when possible or false to wait until the exiting transition completes. |
void setAllowReturnTransitionOverlap (boolean allow)
设置返回转换和重新输入转换是否重叠。 如果属实,重新进入过渡将尽快开始。 如果为false,则重新输入转换将等到返回转换完成后再开始。
Parameters | |
---|---|
allow |
boolean : true to start the reenter transition when possible or false to wait until the return transition completes. |
void setArguments (Bundle args)
为此片段提供构造参数。 这只能在片段附加到其活动之前调用; 也就是说,您应该在构建片段后立即调用它。 这里提供的参数将在片段销毁和创建时保留。
Parameters | |
---|---|
args |
Bundle
|
void setEnterSharedElementCallback (SharedElementCallback callback)
当使用Fragments使用自定义转换时,当此片段在未弹出返回堆栈时连接或分离时,会调用enter转换回调。
Parameters | |
---|---|
callback |
SharedElementCallback : Used to manipulate the shared element transitions on this Fragment when added not as a pop from the back stack. |
void setEnterTransition (Object transition)
设置将用于将Views移动到初始场景的Transition。 进入的视图将是那些有isTransitionGroup()
常规Views或ViewGroup返回true。 典型的转换将延长Visibility
因为进入由INVISIBLE
到VISIBLE
可见性改变所控制。 如果transition
为空,则输入视图将不受影响。
Parameters | |
---|---|
transition |
Object : The Transition to use to move Views into the initial Scene. |
void setExitSharedElementCallback (SharedElementCallback callback)
当自定义转换与碎片一起使用时,退出转换回调在弹出回栈时附加或分离时调用。
Parameters | |
---|---|
callback |
SharedElementCallback : Used to manipulate the shared element transitions on this Fragment when added as a pop from the back stack. |
void setExitTransition (Object transition)
设置当片段被移除,隐藏或在未弹出背堆栈时分离时将用于将视图移出场景的Transition。 退出的视图将是具有isTransitionGroup()
常规Views或ViewGroup返回true的视图。 典型的转换将延长Visibility
因为退出受VISIBLE
到INVISIBLE
可见性的控制。 如果转换为空,视图将保持不受影响。
Parameters | |
---|---|
transition |
Object : The Transition to use to move Views out of the Scene when the Fragment is being closed not due to popping the back stack. transition must be an android.transition.Transition. |
void setHasOptionsMenu (boolean hasMenu)
报告此片段希望通过接收对 onCreateOptionsMenu(Menu, MenuInflater)
和相关方法的调用来参与填充选项菜单。
Parameters | |
---|---|
hasMenu |
boolean : If true, the fragment has menu items to contribute. |
void setInitialSavedState (Fragment.SavedState state)
设置该片段应该从第一次构建时恢复的初始保存状态,由 FragmentManager.saveFragmentInstanceState
返回。
Parameters | |
---|---|
state |
Fragment.SavedState : The state the fragment should be restored from. |
void setMenuVisibility (boolean menuVisible)
设置该片段的菜单是否可见。 如果您知道某个片段已放置在您的视图层次结构中,以便用户目前无法看到该片段,则此功能非常有用,因此它所具有的任何菜单项都不应显示。
Parameters | |
---|---|
menuVisible |
boolean : The default is true, meaning the fragment's menu will be shown as usual. If false, the user will not see the menu. |
void setReenterTransition (Object transition)
设置用于在由于弹出背堆栈而返回时将Views移动到场景中的Transition。 进入的视图将是那些有isTransitionGroup()
返回true的常规Views或ViewGroup。 典型的过渡将延长Visibility
因为退出是由VISIBLE
到INVISIBLE
可见性所决定的。 如果转换为空,视图将保持不受影响。 如果没有设置,默认将使用与setExitTransition(Object)
相同的转换。
Parameters | |
---|---|
transition |
Object : The Transition to use to move Views into the scene when reentering from a previously-started Activity. transition must be an android.transition.Transition. |
void setRetainInstance (boolean retain)
控制是否在重新创建Activity时(例如从配置更改)保留片段实例。 这只能用于不在后端堆栈中的碎片。 如果设置,则在重新创建活动时,片段生命周期将略有不同:
onDestroy()
will not be called (but onDetach()
still will be, because the fragment is being detached from its current activity). onCreate(Bundle)
will not be called since the fragment is not being re-created. onAttach(Activity)
and onActivityCreated(Bundle)
will still be called. Parameters | |
---|---|
retain |
boolean
|
void setReturnTransition (Object transition)
设置当片段准备由于弹出背堆栈而被移除,隐藏或分离时将用于将视图移出场景的Transition。 退出的视图将是具有isTransitionGroup()
常规Views或ViewGroup返回true的视图。 典型的过渡将延伸Visibility
如进入是通过改变从能见度管辖VISIBLE
到INVISIBLE
。 如果transition
为空,则输入视图将不受影响。 如果没有设置,则默认设置将使用与setEnterTransition(Object)
设置的值相同的值。
Parameters | |
---|---|
transition |
Object : The Transition to use to move Views out of the Scene when the Fragment is preparing to close. transition must be an android.transition.Transition. |
void setSharedElementEnterTransition (Object transition)
设置将用于共享元素转移到内容场景的转换。 典型的转换会影响大小和位置,例如ChangeBounds
。 空值将导致转移的共享元素闪烁到最终位置。
Parameters | |
---|---|
transition |
Object : The Transition to use for shared elements transferred into the content Scene. transition must be an android.transition.Transition. |
void setSharedElementReturnTransition (Object transition)
设置将在回弹堆栈弹出期间回传的共享元素的转换。 这个转变在离开片段中起作用。 典型的转换会影响大小和位置,例如ChangeBounds
。 空值将导致转移的共享元素闪烁到最终位置。 如果未设置任何值,则默认值将使用与setSharedElementEnterTransition(Object)
相同的值。
Parameters | |
---|---|
transition |
Object : The Transition to use for shared elements transferred out of the content Scene. transition must be an android.transition.Transition. |
void setTargetFragment (Fragment fragment, int requestCode)
此片段的可选目标。 例如,如果这个片段被另一个片段启动,并且完成时想要将结果返回给第一个片段,则可以使用这个。 这里设置的目标通过FragmentManager.putFragment()
跨实例保留。
Parameters | |
---|---|
fragment |
Fragment : The fragment that is the target of this one. |
requestCode |
int : Optional request code, for convenience if you are going to call back with onActivityResult(int, int, Intent) . |
void setUserVisibleHint (boolean isVisibleToUser)
为系统提供一个关于此片段的用户界面当前是否可见的提示。 此提示默认为true,并且在片段实例状态保存和恢复中保持不变。
应用程序可能会将此设置为false以指示片段的UI已滚动出可见性,否则对用户不可见。 这可以被系统用来区分诸如片段生命周期更新或装载器排序行为等操作的优先级。
Parameters | |
---|---|
isVisibleToUser |
boolean : true if this fragment's UI is currently visible to the user (default), false if it is not. |
boolean shouldShowRequestPermissionRationale (String permission)
获取是否应该以请求许可的理由显示UI。 只有当您没有权限时,您才应该执行此操作,并且请求权限的上下文未明确向用户传达授予此权限的好处。
例如,如果您编写摄像头应用程序,用户就需要请求摄像头权限,并且不需要为什么要求摄像头。 然而,如果应用程序需要位置来标记照片,那么非技术精明的用户可能想知道位置如何与拍照相关。 在这种情况下,您可以选择以请求此权限的理由显示UI。
Parameters | |
---|---|
permission |
String : A permission your app wants to request. |
Returns | |
---|---|
boolean |
Whether you can show permission rationale UI. |
void startActivity (Intent intent)
从片段的Activity中调用 startActivity(Intent)
。
Parameters | |
---|---|
intent |
Intent
|
void startActivity (Intent intent, Bundle options)
从片段的Activity中调用 startActivity(Intent, Bundle)
。
Parameters | |
---|---|
intent |
Intent
|
options |
Bundle
|
void startActivityForResult (Intent intent, int requestCode)
从片段的Activity中调用 startActivityForResult(Intent, int)
。
Parameters | |
---|---|
intent |
Intent
|
requestCode |
int
|
void startActivityForResult (Intent intent, int requestCode, Bundle options)
从片段的Activity中调用 startActivityForResult(Intent, int, Bundle)
。
Parameters | |
---|---|
intent |
Intent
|
requestCode |
int
|
options |
Bundle
|
void startIntentSenderForResult (IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
从片段的Activity中调用 startIntentSenderForResult(IntentSender, int, Intent, int, int, int, Bundle)
。
Parameters | |
---|---|
intent |
IntentSender
|
requestCode |
int
|
fillInIntent |
Intent
|
flagsMask |
int
|
flagsValues |
int
|
extraFlags |
int
|
options |
Bundle
|
Throws | |
---|---|
IntentSender.SendIntentException |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”此对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void unregisterForContextMenu (View view)
防止为给定视图显示上下文菜单。 此方法将删除视图上的View.OnCreateContextMenuListener
。
Parameters | |
---|---|
view |
View : The view that should stop showing a context menu. |
也可以看看: