diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt index 96d5c5ef00a648116d1d1ad6fe314b27be530cff..4ba2821e0630a50f36ffdb4cd396f72c941a0034 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlideFragment.kt @@ -40,6 +40,8 @@ abstract class SlideFragment : DaggerFragment() { protected abstract fun isValid(): Boolean + private var initialized = false + val valid = object : MutableLiveData<Boolean>() { override fun observe(owner: LifecycleOwner, observer: Observer<in Boolean>) { super.observe(owner, observer) @@ -67,6 +69,8 @@ abstract class SlideFragment : DaggerFragment() { resources.getString(title) view.findViewById<TextView>(R.id.description).setText(description) + initialized = true + initData?.let(this::setData) savedInstanceState?.let(this::setData) updateValidity() @@ -76,16 +80,25 @@ abstract class SlideFragment : DaggerFragment() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - getData(outState) + if (initialized) getData(outState) } override fun onViewStateRestored(savedInstanceState: Bundle?) { super.onViewStateRestored(savedInstanceState) - updateValidity() + if (initialized) updateValidity() + } + + protected abstract fun setData(data: Bundle) + protected abstract fun getData(data: Bundle) + + fun save(data: Bundle) { + if (initialized) getData(data) + } + + fun load(data: Bundle) { + if (initialized) setData(data) } - abstract fun setData(data: Bundle) - abstract fun getData(data: Bundle) var initData: Bundle? = null fun requestFocus() { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt index 8f2365995bdbc557f23f4077c4ba7911e2c57e6e..01f2b9aed25c170326583a078de071f4381091bd 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt @@ -33,7 +33,7 @@ class SlidePagerAdapter(private val fragmentManager: FragmentManager) : val result = Bundle() get() { (0 until retainedFragments.size()).map(retainedFragments::valueAt).forEach { - it.getData(field) + it.save(field) } return field } @@ -62,7 +62,7 @@ class SlidePagerAdapter(private val fragmentManager: FragmentManager) : } override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { - retainedFragments.get(position)?.getData(result) + retainedFragments.get(position)?.save(result) retainedFragments.remove(position) super.destroyItem(container, position, `object`) } @@ -97,9 +97,9 @@ class SlidePagerAdapter(private val fragmentManager: FragmentManager) : } fun hasChanged(index: Int, fragment: SlideFragment) { - fragment.getData(result) + fragment.save(result) if (index > -1 && (index + 1) < totalCount) { - getItem(index + 1).setData(result) + getItem(index + 1).save(result) } } } diff --git a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt index c3de2421d8ab1360ec3c5f18847db350098a1f20..231b36736fe468e3990a3ef0879f11a874f89dcd 100644 --- a/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt +++ b/malheur/src/main/java/de/kuschku/malheur/CrashHandler.kt @@ -97,18 +97,14 @@ object CrashHandler { } Thread.setDefaultUncaughtExceptionHandler { currentThread, throwable -> - Thread { - myHandler?.invoke(currentThread, throwable) - originalHandler?.uncaughtException(currentThread, throwable) - }.start() + myHandler?.invoke(currentThread, throwable) + originalHandler?.uncaughtException(currentThread, throwable) } val oldHandler = Thread.currentThread().uncaughtExceptionHandler Thread.currentThread().setUncaughtExceptionHandler { currentThread, throwable -> - Thread { - myHandler?.invoke(currentThread, throwable) - oldHandler?.uncaughtException(currentThread, throwable) - }.start() + myHandler?.invoke(currentThread, throwable) + oldHandler?.uncaughtException(currentThread, throwable) } }