* commit '2e22cec888ae7de0abf78d0c3f14b8d79d34b82f': Call Activity#onAttachFragment()
This commit is contained in:
@@ -4495,6 +4495,7 @@ package android.app {
|
||||
|
||||
public abstract class FragmentHostCallback extends android.app.FragmentContainer {
|
||||
ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
|
||||
method public void onAttachFragment(android.app.Fragment);
|
||||
method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
|
||||
method public android.view.View onFindViewById(int);
|
||||
method public abstract E onGetHost();
|
||||
|
||||
@@ -4587,6 +4587,7 @@ package android.app {
|
||||
|
||||
public abstract class FragmentHostCallback extends android.app.FragmentContainer {
|
||||
ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
|
||||
method public void onAttachFragment(android.app.Fragment);
|
||||
method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
|
||||
method public android.view.View onFindViewById(int);
|
||||
method public abstract E onGetHost();
|
||||
|
||||
@@ -6498,6 +6498,11 @@ public class Activity extends ContextThemeWrapper
|
||||
return (w == null) ? 0 : w.getAttributes().windowAnimations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachFragment(Fragment fragment) {
|
||||
Activity.this.onAttachFragment(fragment);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onFindViewById(int id) {
|
||||
|
||||
@@ -1314,6 +1314,12 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
|
||||
com.android.internal.R.styleable.Fragment_fragmentAllowReturnTransitionOverlap, true);
|
||||
}
|
||||
a.recycle();
|
||||
|
||||
final Activity hostActivity = mHost == null ? null : mHost.getActivity();
|
||||
if (hostActivity != null) {
|
||||
mCalled = false;
|
||||
onInflate(hostActivity, attrs, savedInstanceState);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
@@ -140,6 +139,14 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
|
||||
return mWindowAnimations;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a {@link Fragment} is being attached to this host, immediately
|
||||
* after the call to its {@link Fragment#onAttach(Context)} method and before
|
||||
* {@link Fragment#onCreate(Bundle)}.
|
||||
*/
|
||||
public void onAttachFragment(Fragment fragment) {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onFindViewById(int id) {
|
||||
@@ -187,14 +194,6 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
|
||||
}
|
||||
}
|
||||
|
||||
void onFragmentInflate(Fragment fragment, AttributeSet attrs, Bundle savedInstanceState) {
|
||||
fragment.onInflate(mContext, attrs, savedInstanceState);
|
||||
}
|
||||
|
||||
void onFragmentAttach(Fragment fragment) {
|
||||
fragment.onAttach(mContext);
|
||||
}
|
||||
|
||||
void doLoaderStart() {
|
||||
if (mLoadersStarted) {
|
||||
return;
|
||||
|
||||
@@ -844,13 +844,13 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
|
||||
f.mFragmentManager = mParent != null
|
||||
? mParent.mChildFragmentManager : mHost.getFragmentManagerImpl();
|
||||
f.mCalled = false;
|
||||
mHost.onFragmentAttach(f);
|
||||
f.onAttach(mHost.getContext());
|
||||
if (!f.mCalled) {
|
||||
throw new SuperNotCalledException("Fragment " + f
|
||||
+ " did not call through to super.onAttach()");
|
||||
}
|
||||
if (f.mParentFragment == null) {
|
||||
mHost.onFragmentAttach(f);
|
||||
mHost.onAttachFragment(f);
|
||||
}
|
||||
|
||||
if (!f.mRetaining) {
|
||||
@@ -2107,7 +2107,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
|
||||
fragment.mTag = tag;
|
||||
fragment.mInLayout = true;
|
||||
fragment.mFragmentManager = this;
|
||||
mHost.onFragmentInflate(fragment, attrs, fragment.mSavedFragmentState);
|
||||
fragment.onInflate(mHost.getContext(), attrs, fragment.mSavedFragmentState);
|
||||
addFragment(fragment, true);
|
||||
} else if (fragment.mInLayout) {
|
||||
// A fragment already exists and it is not one we restored from
|
||||
@@ -2124,7 +2124,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
|
||||
// from last saved state), then give it the attributes to
|
||||
// initialize itself.
|
||||
if (!fragment.mRetaining) {
|
||||
mHost.onFragmentInflate(fragment, attrs, fragment.mSavedFragmentState);
|
||||
fragment.onInflate(mHost.getContext(), attrs, fragment.mSavedFragmentState);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user