Skip to content

Instantly share code, notes, and snippets.

@g-eorge
Created January 13, 2013 21:49
Show Gist options
  • Save g-eorge/4526377 to your computer and use it in GitHub Desktop.
Save g-eorge/4526377 to your computer and use it in GitHub Desktop.
01-13 21:17:12.220: D/SharedPreferencesCompat(2587): Apply method found on this Editor method apply, calling it.
01-13 21:17:12.230: D/SharedPreferencesCompat(2587): instance mirror for android.app.SharedPreferencesImpl$EditorImpl@412fa7e8
01-13 21:17:12.760: E/AndroidRuntime(2587): FATAL EXCEPTION: main
01-13 21:17:12.760: E/AndroidRuntime(2587): java.lang.AssertionError: assertion failed: no symbol could be
01-13 21:17:12.760: E/AndroidRuntime(2587): loaded from class android.app.SharedPreferencesImpl$EditorImpl in class SharedPreferencesImpl with name $EditorImpl and classloader java.lang.BootClassLoader@409c74d0
01-13 21:17:12.760: E/AndroidRuntime(2587): 21at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:957)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:916)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:916)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:104)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.TwoWayCache.toScala(TwoWayCache.scala:38)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:102)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:916)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror.classSymbol(JavaMirrors.scala:206)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaInstanceMirror.symbol(JavaMirrors.scala:245)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaInstanceMirror.reflectMethod(JavaMirrors.scala:261)
01-13 21:17:12.760: E/AndroidRuntime(2587): at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaInstanceMirror.reflectMethod(JavaMirrors.scala:243)
01-13 21:17:12.760: E/AndroidRuntime(2587): at droid.essentials.utils.SharedPreferencesCompat$.applyOrCommit(SharedPreferencesCompat.scala:21)
01-13 21:17:12.760: E/AndroidRuntime(2587): at droid.essentials.MainActivity.onCreate(MainActivity.scala:33)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.Activity.performCreate(Activity.java:4465)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.os.Looper.loop(Looper.java:137)
01-13 21:17:12.760: E/AndroidRuntime(2587): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-13 21:17:12.760: E/AndroidRuntime(2587): at java.lang.reflect.Method.invokeNative(Native Method)
01-13 21:17:12.760: E/AndroidRuntime(2587): at java.lang.reflect.Method.invoke(Method.java:511)
01-13 21:17:12.760: E/AndroidRuntime(2587): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-13 21:17:12.760: E/AndroidRuntime(2587): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-13 21:17:12.760: E/AndroidRuntime(2587): at dalvik.system.NativeStart.main(Native Method)
package droid.essentials.utils
import _root_.android.content.SharedPreferences.Editor
import _root_.android.util.Log
import scala.reflect.runtime.universe._
import scala.reflect.runtime.currentMirror
object SharedPreferencesCompat {
def applyOrCommit(editor: Editor) = {
val mirror = currentMirror
val t = typeOf[Editor]
// Try to find a method called 'apply' on the Editor class
t.members.find({ sym: Symbol => sym.name.toString.equals("apply") }) match {
case Some(method: MethodSymbol) =>
// If it exists then invoke it
Log.d("SharedPreferencesCompat", "Apply method found on this Editor %s, calling it.".format(method.toString))
val instanceMirror = mirror.reflect(editor)
Log.d("SharedPreferencesCompat", instanceMirror.toString)
val invoke = instanceMirror.reflectMethod(method)
invoke()
case _ =>
Log.d("SharedPreferencesCompat", "No apply method found on this Editor, using commit instead.")
editor.commit
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment