public class FragmentActivity
extends Activity
implements ActivityCompat.OnRequestPermissionsResultCallback, ActivityCompatApi23.RequestPermissionsRequestCodeValidator
java.lang.Object | |||||
↳ | android.content.Context | ||||
↳ | android.content.ContextWrapper | ||||
↳ | android.view.ContextThemeWrapper | ||||
↳ | android.app.Activity | ||||
↳ | android.support.v4.app.FragmentActivity |
Known Direct Subclasses |
Known Indirect Subclasses |
希望使用基于支持的 Fragment
和 Loader
API的活动的基类。
在使用此类而不是新平台的内置碎片和加载程序支持时,必须分别使用 getSupportFragmentManager()
和 getSupportLoaderManager()
方法来访问这些功能。
已知限制:
使用<fragment>
标记时,此实现无法将父视图的ID用作新的片段ID。 您必须在<fragment>
明确指定一个ID(或标签)。
在Honeycomb之前(3.0),一个活动的状态在暂停之前被保存。 片段是一个新的状态的重要数量,并且足够动态,以至于人们经常希望他们在暂停和停止之间改变。 如果尝试在保存后更改片段状态,这些类将引发异常,以避免意外丢失UI状态。 然而,在Honeycomb之前,这种限制太多了,因为在暂停之前状态被保存。 为了解决这个问题,当在Honeycomb之前的平台上运行时,如果在状态保存和正在停止的活动之间更改片段,则不会抛出异常。 这意味着在某些情况下,如果活动从最后保存的状态恢复,这可能是用户上次看到之前的快照。
Inherited constants |
---|
From class android.app.Activity
|
From class android.content.Context
|
From interface android.content.ComponentCallbacks2
|
Inherited fields |
---|
From class android.app.Activity
|
Public constructors |
|
---|---|
FragmentActivity() |
Public methods |
|
---|---|
void |
dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) 将活动的状态打印到给定的流中。 |
Object |
getLastCustomNonConfigurationInstance() 返回以前从 |
FragmentManager |
getSupportFragmentManager() 返回FragmentManager以与与此活动关联的片段进行交互。 |
LoaderManager |
getSupportLoaderManager() |
final MediaControllerCompat |
getSupportMediaController() 检索发送媒体密钥和音量事件的当前 |
void |
onAttachFragment(Fragment fragment) 当片段附加到活动时调用。 |
void |
onBackPressed() 注意弹出碎片堆栈或适当地完成活动。 |
void |
onConfigurationChanged(Configuration newConfig) 调度配置更改为所有片段。 |
boolean |
onCreatePanelMenu(int featureId, Menu menu) 发送到Fragment.onCreateOptionsMenu()。 |
View |
onCreateView(View parent, String name, Context context, AttributeSet attrs) 标准实施 |
View |
onCreateView(String name, Context context, AttributeSet attrs) 标准实施 |
boolean |
onKeyDown(int keyCode, KeyEvent event) 照顾为Eclair之前的平台调用onBackPressed()。 |
void |
onLowMemory() 将LowMemory()分配给所有片段。 |
boolean |
onMenuItemSelected(int featureId, MenuItem item) 将上下文和选项菜单分派给片段。 |
void |
onMultiWindowModeChanged(boolean isInMultiWindowMode) 当活动从全屏模式更改为多窗口模式时,由系统调用,反之亦然。 注意:如果您重写此方法,则必须调用 |
void |
onPanelClosed(int featureId, Menu menu) 在片段上调用onOptionsMenuClosed()。 |
void |
onPictureInPictureModeChanged(boolean isInPictureInPictureMode) 当活动从画中画模式切换到画中画模式时由系统调用。 注意:如果您重写此方法,则必须调用 |
boolean |
onPreparePanel(int featureId, View view, Menu menu) 将onPrepareOptionsMenu()分派给片段。 |
void |
onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) 从请求权限回调结果。 |
Object |
onRetainCustomNonConfigurationInstance() |
final Object |
onRetainNonConfigurationInstance() 保留所有适当的片段和加载器状态。 |
void |
onStateNotSaved() 挂钩注意片段状态不再保存。 |
void |
setEnterSharedElementCallback(SharedElementCallback callback) 当使用 |
void |
setExitSharedElementCallback(SharedElementCallback listener) 当使用 |
final void |
setSupportMediaController(MediaControllerCompat mediaController) 设置 |
void |
startActivityForResult(Intent intent, int requestCode, Bundle options) 在完成后启动您希望得到结果的活动。 |
void |
startActivityForResult(Intent intent, int requestCode) 修改标准行为以允许将结果传送到片段。 |
void |
startActivityFromFragment(Fragment fragment, Intent intent, int requestCode) 由Fragment.startActivityForResult()调用以实现其行为。 |
void |
startActivityFromFragment(Fragment fragment, Intent intent, int requestCode, Bundle options) 由Fragment.startActivityForResult()调用以实现其行为。 |
void |
startIntentSenderForResult(IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) 与呼叫 |
void |
startIntentSenderForResult(IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) 像 |
void |
startIntentSenderFromFragment(Fragment fragment, IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) 由Fragment.startIntentSenderForResult()调用以实现其行为。 |
void |
supportFinishAfterTransition() 反转活动场景条目转换并触发调用活动以反转其退出转换。 |
void |
supportInvalidateOptionsMenu() 支持库版本 |
void |
supportPostponeEnterTransition() 仅支持API 21及更高版本的支持库版本 |
void |
supportStartPostponedEnterTransition() 仅支持API 21及更高版本的支持库文件版本 |
final void |
validateRequestPermissionsRequestCode(int requestCode) |
Protected methods |
|
---|---|
void |
onActivityResult(int requestCode, int resultCode, Intent data) 将传入结果分发到正确的片段。 |
void |
onCreate(Bundle savedInstanceState) 执行所有片段和加载器的初始化。 |
void |
onDestroy() 销毁所有碎片和装载机。 |
void |
onNewIntent(Intent intent) 处理onNewIntent()通知片段管理器状态未保存。 |
void |
onPause() 将onPause()分配给碎片。 |
void |
onPostResume() 将onResume()分派给片段。 |
void |
onResume() 将onResume()分派给片段。 |
void |
onResumeFragments() 这是 |
void |
onSaveInstanceState(Bundle outState) 保存所有适当的片段状态。 |
void |
onStart() 将onStart()分派给所有片段。 |
void |
onStop() 将onStop()分派给所有片段。 |
Inherited methods |
|
---|---|
From class android.app.Activity
|
|
From class android.view.ContextThemeWrapper
|
|
From class android.content.ContextWrapper
|
|
From class android.content.Context
|
|
From class java.lang.Object
|
|
From interface android.view.LayoutInflater.Factory2
|
|
From interface android.view.Window.Callback
|
|
From interface android.view.KeyEvent.Callback
|
|
From interface android.view.View.OnCreateContextMenuListener
|
|
From interface android.content.ComponentCallbacks2
|
|
From interface android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback
|
|
From interface android.support.v4.app.ActivityCompatApi23.RequestPermissionsRequestCodeValidator
|
|
From interface android.view.LayoutInflater.Factory
|
|
From interface android.content.ComponentCallbacks
|
FragmentActivity ()
void dump (String prefix, FileDescriptor fd, PrintWriter writer, String[] args)
将活动的状态打印到给定的流中。 如果运行“adb shell dumpsys活动”,则会被调用
Parameters | |
---|---|
prefix |
String : Desired prefix to prepend at each line of output. |
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. |
Object getLastCustomNonConfigurationInstance ()
返回以前从 onRetainCustomNonConfigurationInstance()
返回的值。
Returns | |
---|---|
Object |
FragmentManager getSupportFragmentManager ()
返回FragmentManager以与与此活动关联的片段进行交互。
Returns | |
---|---|
FragmentManager |
MediaControllerCompat getSupportMediaController ()
检索发送媒体密钥和音量事件的当前 MediaControllerCompat
。
Returns | |
---|---|
MediaControllerCompat |
The controller which should receive events. |
void onAttachFragment (Fragment fragment)
当片段附加到活动时调用。
如果片段还没有先前调用 onCreate
则在附加片段 onAttach
和附加片段 onCreate
之前调用此 onCreate
。
Parameters | |
---|---|
fragment |
Fragment
|
void onBackPressed ()
注意弹出碎片堆栈或适当地完成活动。
void onConfigurationChanged (Configuration newConfig)
调度配置更改为所有片段。
Parameters | |
---|---|
newConfig |
Configuration : The new device configuration. |
boolean onCreatePanelMenu (int featureId, Menu menu)
发送到Fragment.onCreateOptionsMenu()。
Parameters | |
---|---|
featureId |
int : The panel being created. |
menu |
Menu : The menu inside the panel. |
Returns | |
---|---|
boolean |
boolean You must return true for the panel to be displayed; if you return false it will not be shown. |
View onCreateView (View parent, String name, Context context, AttributeSet attrs)
标准实施onCreateView(View, String, Context, AttributeSet)
与返回的LayoutInflater充气时使用getSystemService(Class
。 这个实现处理
Parameters | |
---|---|
parent |
View : The parent that the created view will be placed in; note that this may be null. |
name |
String : Tag name to be inflated. |
context |
Context : The context the view is being created in. |
attrs |
AttributeSet : Inflation attributes as specified in XML file. |
Returns | |
---|---|
View |
View Newly created view. Return null for the default behavior. |
View onCreateView (String name, Context context, AttributeSet attrs)
标准实施onCreateView(String, Context, AttributeSet)
与返回的LayoutInflater充气时使用getSystemService(Class
。 此实现不会执行任何操作,并且适用于HONEYCOMB
应用程序。 较新的应用程序应该使用onCreateView(View, String, Context, AttributeSet)
。
Parameters | |
---|---|
name |
String : Tag name to be inflated. |
context |
Context : The context the view is being created in. |
attrs |
AttributeSet : Inflation attributes as specified in XML file. |
Returns | |
---|---|
View |
View Newly created view. Return null for the default behavior. |
boolean onKeyDown (int keyCode, KeyEvent event)
照顾为Eclair之前的平台调用onBackPressed()。
Parameters | |
---|---|
keyCode |
int : The value in event.getKeyCode(). |
event |
KeyEvent : Description of the key event. |
Returns | |
---|---|
boolean |
Return true to prevent this event from being propagated further, or false to indicate that you have not handled this event and it should continue to be propagated. |
void onLowMemory ()
将LowMemory()分配给所有片段。
boolean onMenuItemSelected (int featureId, MenuItem item)
将上下文和选项菜单分派给片段。
Parameters | |
---|---|
featureId |
int : The panel that the menu is in. |
item |
MenuItem : The menu item that was selected. |
Returns | |
---|---|
boolean |
boolean Return true to finish processing of selection, or false to perform the normal menu handling (calling its Runnable or sending a Message to its target Handler). |
void onMultiWindowModeChanged (boolean isInMultiWindowMode)
当活动从全屏模式更改为多窗口模式时,由系统调用,反之亦然。
注意:如果您重写此方法,则必须调用 super.onMultiWindowModeChanged
才能正确分派事件以支持附加到此活动的片段。
Parameters | |
---|---|
isInMultiWindowMode |
boolean : True if the activity is in multi-window mode. |
void onPanelClosed (int featureId, Menu menu)
在片段上调用onOptionsMenuClosed()。
Parameters | |
---|---|
featureId |
int : The panel that is being displayed. |
menu |
Menu : If onCreatePanelView() returned null, this is the Menu being displayed in the panel. |
void onPictureInPictureModeChanged (boolean isInPictureInPictureMode)
当活动从画中画模式切换到画中画模式时由系统调用。
注意:如果您重写此方法,则必须调用 super.onPictureInPictureModeChanged
才能正确分派事件以支持附加到此活动的片段。
Parameters | |
---|---|
isInPictureInPictureMode |
boolean : True if the activity is in picture-in-picture mode. |
boolean onPreparePanel (int featureId, View view, Menu menu)
将onPrepareOptionsMenu()分派给片段。
Parameters | |
---|---|
featureId |
int : The panel that is being displayed. |
view |
View : The View that was returned by onCreatePanelView(). |
menu |
Menu : If onCreatePanelView() returned null, this is the Menu being displayed in the panel. |
Returns | |
---|---|
boolean |
boolean You must return true for the panel to be displayed; if you return false it will not be shown. |
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. |
Object onRetainCustomNonConfigurationInstance ()
使用此代替onRetainNonConfigurationInstance()
。 稍后以getLastCustomNonConfigurationInstance()
检索。
Returns | |
---|---|
Object |
Object onRetainNonConfigurationInstance ()
保留所有适当的片段和加载器状态。 你不能自己重写这个! 如果您想保留自己的状态,请使用onRetainCustomNonConfigurationInstance()
。
Returns | |
---|---|
Object |
any Object holding the desired state to propagate to the next activity instance |
void onStateNotSaved ()
挂钩注意片段状态不再保存。
void setEnterSharedElementCallback (SharedElementCallback callback)
当使用makeSceneTransitionAnimation(Activity, android.view.View, String)
启动Activity时,将调用回调来处理启动的 Activity上的共享元素。 这需要FEATURE_CONTENT_TRANSITIONS
。
Parameters | |
---|---|
callback |
SharedElementCallback : Used to manipulate shared element transitions on the launched Activity. |
void setExitSharedElementCallback (SharedElementCallback listener)
当使用makeSceneTransitionAnimation(Activity, android.view.View, String)
启动Activity时,将调用侦听器来处理启动 Activity上的共享元素。 大多数电话只会在从启动的活动返回时才会发生。 这需要FEATURE_CONTENT_TRANSITIONS
。
Parameters | |
---|---|
listener |
SharedElementCallback : Used to manipulate shared element transitions on the launching Activity. |
void setSupportMediaController (MediaControllerCompat mediaController)
设置一个 MediaControllerCompat
供以后通过 getSupportMediaController()
检索。
在API 21及更高版本中,此控制器将绑定到活动窗口,介质密钥和活动位于前台时收到的卷事件将被转发给控制器,并用于调用传输控件或调整音量。 在API 21之前,通过活跃的MediaSessionCompat
和媒体按钮接收器全球处理媒体密钥和音量事件仍将受到尊重。
Parameters | |
---|---|
mediaController |
MediaControllerCompat : The controller for the session which should receive media keys and volume changes on API 21 and later. |
void startActivityForResult (Intent intent, int requestCode, Bundle options)
在完成后启动您希望得到结果的活动。 当此活动退出时,将使用给定的requestCode调用onActivityResult()方法。 使用负的requestCode与调用startActivity(Intent)
相同(该活动不作为子活动启动)。
请注意,此方法只应与用于返回结果的Intent协议一起使用。 在其他协议(如ACTION_MAIN
或ACTION_VIEW
)中,如果您期望,可能无法获得结果。 例如,如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。
作为一种特殊情况,如果您在activity的初始onCreate(Bundle savedInstanceState)/ onResume()过程中调用startActivityForResult(),并且requestCode> = 0,那么在从已启动的活动返回结果之前,您的窗口将不会显示。 这是为了避免在重定向到其他活动时出现可见的闪烁。
如果没有找到运行给定Intent的活动,则此方法将引发 ActivityNotFoundException
。
Parameters | |
---|---|
intent |
Intent : The intent to start. |
requestCode |
int : If >= 0, this code will be returned in onActivityResult() when the activity exits. |
options |
Bundle : Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details. |
void startActivityForResult (Intent intent, int requestCode)
修改标准行为以允许将结果传送到片段。 这强制requestCode为<= 0xffff的限制。
Parameters | |
---|---|
intent |
Intent : The intent to start. |
requestCode |
int : If >= 0, this code will be returned in onActivityResult() when the activity exits. |
void startActivityFromFragment (Fragment fragment, Intent intent, int requestCode)
由Fragment.startActivityForResult()调用以实现其行为。
Parameters | |
---|---|
fragment |
Fragment
|
intent |
Intent
|
requestCode |
int
|
void startActivityFromFragment (Fragment fragment, Intent intent, int requestCode, Bundle options)
由Fragment.startActivityForResult()调用以实现其行为。
Parameters | |
---|---|
fragment |
Fragment
|
intent |
Intent
|
requestCode |
int
|
options |
Bundle
|
void startIntentSenderForResult (IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
与呼叫 startIntentSenderForResult(IntentSender, int, Intent, int, int, int, Bundle)
,没有选项。
Parameters | |
---|---|
intent |
IntentSender : The IntentSender to launch. |
requestCode |
int : If >= 0, this code will be returned in onActivityResult() when the activity exits. |
fillInIntent |
Intent : If non-null, this will be provided as the intent parameter to sendIntent(Context, int, Intent, IntentSender.OnFinished, Handler) . |
flagsMask |
int : Intent flags in the original IntentSender that you would like to change. |
flagsValues |
int : Desired values for any bits set in flagsMask |
extraFlags |
int : Always set to 0. |
Throws | |
---|---|
IntentSender.SendIntentException |
void startIntentSenderForResult (IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
像startActivityForResult(Intent, int)
一样,但允许您使用IntentSender来描述要启动的活动。 如果IntentSender用于某个活动,那么该活动将开始,就像您在此调用常规startActivityForResult(Intent, int)
; 否则,其相关操作将被执行(例如发送广播),就好像您已经调用了IntentSender.sendIntent
一样。
Parameters | |
---|---|
intent |
IntentSender : The IntentSender to launch. |
requestCode |
int : If >= 0, this code will be returned in onActivityResult() when the activity exits. |
fillInIntent |
Intent : If non-null, this will be provided as the intent parameter to sendIntent(Context, int, Intent, IntentSender.OnFinished, Handler) . |
flagsMask |
int : Intent flags in the original IntentSender that you would like to change. |
flagsValues |
int : Desired values for any bits set in flagsMask |
extraFlags |
int : Always set to 0. |
options |
Bundle : Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details. If options have also been supplied by the IntentSender, options given here will override any that conflict with those given by the IntentSender. |
Throws | |
---|---|
IntentSender.SendIntentException |
void startIntentSenderFromFragment (Fragment fragment, IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
由Fragment.startIntentSenderForResult()调用以实现其行为。
Parameters | |
---|---|
fragment |
Fragment
|
intent |
IntentSender
|
requestCode |
int
|
fillInIntent |
Intent
|
flagsMask |
int
|
flagsValues |
int
|
extraFlags |
int
|
options |
Bundle
|
Throws | |
---|---|
IntentSender.SendIntentException |
void supportFinishAfterTransition ()
反转活动场景条目转换并触发调用活动以反转其退出转换。 退出转换完成后, finish()
。 如果没有使用转换,则立即调用finish()并运行活动出口转换。
在Android 4.4或更低版本中,此方法仅完成Activity而不进行特殊的退出转换。
void supportInvalidateOptionsMenu ()
支持库版本 invalidateOptionsMenu()
。
使活动的选项菜单失效。 这将导致菜单的相关演示在下次请求菜单时通过调用onCreateOptionsMenu和onPrepareOptionsMenu完全更新。
void supportPostponeEnterTransition ()
仅支持API 21和更高版本的支持库版本 postponeEnterTransition()
。
void supportStartPostponedEnterTransition ()
仅支持API 21及更高版本的支持库版本 startPostponedEnterTransition()
。
void validateRequestPermissionsRequestCode (int requestCode)
Parameters | |
---|---|
requestCode |
int
|
void onActivityResult (int requestCode, int resultCode, Intent data)
将传入结果分发到正确的片段。
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 onCreate (Bundle savedInstanceState)
执行所有片段和加载器的初始化。
Parameters | |
---|---|
savedInstanceState |
Bundle : If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle) . Note: Otherwise it is null. |
void onDestroy ()
销毁所有碎片和装载机。
void onNewIntent (Intent intent)
处理onNewIntent()通知片段管理器状态未保存。 如果您正在处理新的意图,并且可能正在对碎片状态进行更改,那么您首先要确保先打电话给超级客户。 否则,如果你的状态被保存但活动没有停止,你可以得到一个在onResume()之前发生的onNewIntent()调用,并且在那一刻尝试执行片断操作会抛出IllegalStateException,因为片段管理器认为状态仍然保存。
Parameters | |
---|---|
intent |
Intent : The new intent that was started for the activity. |
void onPause ()
将onPause()分配给碎片。
void onPostResume ()
将onResume()分派给片段。
void onResume ()
将onResume()分派给片段。 请注意,为了更好地与旧版本的平台进行互操作,在此调用时,附加到活动的碎片不会恢复。 这意味着在某些情况下,以前的状态仍然可以保存,不允许修改状态的片段事务。 要正确地与处于正确状态的片段交互,您应该覆盖onResumeFragments()
。
void onResumeFragments ()
这是onResume()
的片段定向版本,您可以覆盖该版本, onResume()
在恢复片段的同一点执行Activity中的操作。 一定要始终打电话给超级班。
void onSaveInstanceState (Bundle outState)
保存所有适当的片段状态。
Parameters | |
---|---|
outState |
Bundle : Bundle in which to place your saved state. |
void onStart ()
将onStart()分派给所有片段。 确保所有创建的装载机现在都已启动。
void onStop ()
将onStop()分派给所有片段。 确保所有装载机停止。