summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-10-28 10:32:37 -0700
committerDianne Hackborn <hackbod@google.com>2010-10-28 12:29:15 -0700
commit5164246d7e47b9c995ca1e1587f3056eb777f60b (patch)
tree273d9124e7897c1a9b41fd4ac3eef6862a81a979
parent00d319e0f9bb563c025c8435bd424d66afcd5f25 (diff)
downloadframeworks_base-5164246d7e47b9c995ca1e1587f3056eb777f60b.zip
frameworks_base-5164246d7e47b9c995ca1e1587f3056eb777f60b.tar.gz
frameworks_base-5164246d7e47b9c995ca1e1587f3056eb777f60b.tar.bz2
Fix setting of class loader.
Also add Bundle API to retrieve its class loader because... well, why not. Change-Id: Ie939f6a2ae13974e5a05eb5bd3b28f350d8a8565
-rw-r--r--api/current.xml11
-rw-r--r--core/java/android/app/Fragment.java4
-rw-r--r--core/java/android/app/FragmentManager.java1
-rw-r--r--core/java/android/os/Bundle.java7
4 files changed, 23 insertions, 0 deletions
diff --git a/api/current.xml b/api/current.xml
index 1ca51c2..ef73447 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -134781,6 +134781,17 @@
<parameter name="key" type="java.lang.String">
</parameter>
</method>
+<method name="getClassLoader"
+ return="java.lang.ClassLoader"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getDouble"
return="double"
abstract="false"
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index 3ec0912..f27a15e 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -84,6 +84,10 @@ final class FragmentState implements Parcelable {
return mInstance;
}
+ if (mArguments != null) {
+ mArguments.setClassLoader(activity.getClassLoader());
+ }
+
mInstance = Fragment.instantiate(activity, mClassName, mArguments);
if (mSavedFragmentState != null) {
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index d9a6171..45f9325 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -1200,6 +1200,7 @@ final class FragmentManagerImpl implements FragmentManager {
f.mInLayout = false;
f.mAdded = false;
if (fs.mSavedFragmentState != null) {
+ fs.mSavedFragmentState.setClassLoader(mActivity.getClassLoader());
f.mSavedViewState = fs.mSavedFragmentState.getSparseParcelableArray(
FragmentManagerImpl.VIEW_STATE_TAG);
}
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index 0ec1c74..8eac7aa 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -181,6 +181,13 @@ public final class Bundle implements Parcelable, Cloneable {
}
/**
+ * Return the ClassLoader currently associated with this Bundle.
+ */
+ public ClassLoader getClassLoader() {
+ return mClassLoader;
+ }
+
+ /**
* Clones the current Bundle. The internal map is cloned, but the keys and
* values to which it refers are copied by reference.
*/