Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48f91e35 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Fix Fragment.onInflate() to actually work correctly." into honeycomb-mr1

parents 1e158e9c e3a7f628
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -30379,6 +30379,21 @@
<parameter name="hidden" type="boolean">
</parameter>
</method>
<method name="onInflate"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="deprecated"
 visibility="public"
>
<parameter name="attrs" type="android.util.AttributeSet">
</parameter>
<parameter name="savedInstanceState" type="android.os.Bundle">
</parameter>
</method>
<method name="onInflate"
 return="void"
 abstract="false"
@@ -30389,6 +30404,8 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="activity" type="android.app.Activity">
</parameter>
<parameter name="attrs" type="android.util.AttributeSet">
</parameter>
<parameter name="savedInstanceState" type="android.os.Bundle">
@@ -143820,6 +143837,21 @@
<parameter name="key" type="java.lang.String">
</parameter>
</method>
<method name="getCharSequence"
 return="java.lang.CharSequence"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="key" type="java.lang.String">
</parameter>
<parameter name="defaultValue" type="java.lang.CharSequence">
</parameter>
</method>
<method name="getCharSequenceArray"
 return="java.lang.CharSequence[]"
 abstract="false"
@@ -144153,6 +144185,21 @@
<parameter name="key" type="java.lang.String">
</parameter>
</method>
<method name="getString"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="key" type="java.lang.String">
</parameter>
<parameter name="defaultValue" type="java.lang.String">
</parameter>
</method>
<method name="getStringArray"
 return="java.lang.String[]"
 abstract="false"
+2 −2
Original line number Diff line number Diff line
@@ -4137,7 +4137,7 @@ public class Activity extends ContextThemeWrapper
            fragment.mInLayout = true;
            fragment.mImmediateActivity = this;
            fragment.mFragmentManager = mFragments;
            fragment.onInflate(attrs, fragment.mSavedFragmentState);
            fragment.onInflate(this, attrs, fragment.mSavedFragmentState);
            mFragments.addFragment(fragment, true);

        } else if (fragment.mInLayout) {
@@ -4156,7 +4156,7 @@ public class Activity extends ContextThemeWrapper
            // from last saved state), then give it the attributes to
            // initialize itself.
            if (!fragment.mRetaining) {
                fragment.onInflate(attrs, fragment.mSavedFragmentState);
                fragment.onInflate(this, attrs, fragment.mSavedFragmentState);
            }
            mFragments.moveToState(fragment);
        }
+39 −14
Original line number Diff line number Diff line
@@ -858,33 +858,58 @@ public class Fragment implements ComponentCallbacks, OnCreateContextMenuListener
        return mActivity.getLayoutInflater();
    }
    
    /**
     * @deprecated Use {@link #onInflate(Activity, AttributeSet, Bundle)} instead.
     */
    @Deprecated
    public void onInflate(AttributeSet attrs, Bundle savedInstanceState) {
        mCalled = true;
    }

    /**
     * Called when a fragment is being created as part of a view layout
     * inflation, typically from setting the content view of an activity.  This
     * will be called immediately after the fragment is created from a <fragment>
     * may be called immediately after the fragment is created from a <fragment>
     * tag in a layout file.  Note this is <em>before</em> the fragment's
     * {@link #onAttach(Activity)} has been called; all you should do here is
     * parse the attributes and save them away.  A convenient thing to do is
     * simply copy them into a Bundle that is given to {@link #setArguments(Bundle)}.
     * parse the attributes and save them away.
     * 
     * <p>This is called every time the fragment is inflated, even if it is
     * being inflated into a new instance with saved state.  Because a fragment's
     * arguments are retained across instances, it may make no sense to re-parse
     * the attributes into new arguments.  You may want to first check
     * {@link #getArguments()} and only parse the attributes if it returns null,
     * the assumption being that if it is non-null those are the same arguments
     * from the first time the fragment was inflated.  (That said, you may want
     * to have layouts change for different configurations such as landscape
     * and portrait, which can have different attributes.  If so, you will need
     * to re-parse the attributes each time this is called to generate new
     * arguments.)</p>
     * being inflated into a new instance with saved state.  It typically makes
     * sense to re-parse the parameters each time, to allow them to change with
     * different configurations.</p>
     *
     * <p>Here is a typical implementation of a fragment that can take parameters
     * both through attributes supplied here as well from {@link #getArguments()}:</p>
     *
     * {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentArguments.java
     *      fragment}
     *
     * <p>Note that parsing the XML attributes uses a "styleable" resource.  The
     * declaration for the styleable used here is:</p>
     *
     * {@sample development/samples/ApiDemos/res/values/attrs.xml fragment_arguments}
     * 
     * <p>The fragment can then be declared within its activity's content layout
     * through a tag like this:</p>
     *
     * {@sample development/samples/ApiDemos/res/layout/fragment_arguments.xml from_attributes}
     *
     * <p>This fragment can also be created dynamically from arguments given
     * at runtime in the arguments Bundle; here is an example of doing so at
     * creation of the containing activity:</p>
     *
     * {@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentArguments.java
     *      create}
     *
     * @param activity The Activity that is inflating this fragment.
     * @param attrs The attributes at the tag where the fragment is
     * being created.
     * @param savedInstanceState If the fragment is being re-created from
     * a previous saved state, this is the state.
     */
    public void onInflate(AttributeSet attrs, Bundle savedInstanceState) {
    public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
        onInflate(attrs, savedInstanceState);
        mCalled = true;
    }
    
+6 −0
Original line number Diff line number Diff line
@@ -660,6 +660,12 @@ final class FragmentManagerImpl extends FragmentManager {
        }
        
        if (f.mState < newState) {
            // For fragments that are created from a layout, when restoring from
            // state we don't want to allow them to be created until they are
            // being reloaded from the layout.
            if (f.mFromLayout && !f.mInLayout) {
                return;
            }
            if (f.mAnimatingAway != null) {
                // The fragment is currently being animated...  but!  Now we
                // want to move our state back up.  Give up on waiting for the
+44 −1
Original line number Diff line number Diff line
@@ -1028,7 +1028,6 @@ public final class Bundle implements Parcelable, Cloneable {
        }
    }


    /**
     * Returns the value associated with the given key, or null if
     * no mapping of the desired type exists for the given key or a null
@@ -1051,6 +1050,28 @@ public final class Bundle implements Parcelable, Cloneable {
        }
    }

    /**
     * Returns the value associated with the given key, or defaultValue if
     * no mapping of the desired type exists for the given key.
     *
     * @param key a String, or null
     * @param defaultValue Value to return if key does not exist
     * @return a String value, or null
     */
    public String getString(String key, String defaultValue) {
        unparcel();
        Object o = mMap.get(key);
        if (o == null) {
            return defaultValue;
        }
        try {
            return (String) o;
        } catch (ClassCastException e) {
            typeWarning(key, o, "String", e);
            return defaultValue;
        }
    }

    /**
     * Returns the value associated with the given key, or null if
     * no mapping of the desired type exists for the given key or a null
@@ -1073,6 +1094,28 @@ public final class Bundle implements Parcelable, Cloneable {
        }
    }

    /**
     * Returns the value associated with the given key, or defaultValue if
     * no mapping of the desired type exists for the given key.
     *
     * @param key a String, or null
     * @param defaultValue Value to return if key does not exist
     * @return a CharSequence value, or null
     */
    public CharSequence getCharSequence(String key, CharSequence defaultValue) {
        unparcel();
        Object o = mMap.get(key);
        if (o == null) {
            return defaultValue;
        }
        try {
            return (CharSequence) o;
        } catch (ClassCastException e) {
            typeWarning(key, o, "CharSequence", e);
            return defaultValue;
        }
    }

    /**
     * Returns the value associated with the given key, or null if
     * no mapping of the desired type exists for the given key or a null
Loading