Hey all,
It looks like anko 0.9.1 is crashing with the following stack trace:
```02-07 15:56:16.211 29688 29688 E AndroidRuntime: java.lang.NoSuchMethodError: No virtual method getActivity()Landroid/app/Activity; in class Landroid/support/v4/app/Fragment; or its super classes (declaration of 'android.support.v4.app.Fragment' appears in /data/app/org.loop.example-1/base.apk)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at org.jetbrains.anko.support.v4.SupportContextUtilsKt.getCtx(SupportContextUtils.kt:33)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at com.jongla.soundmash.FirstFragment.onCreateView(FirstFragment.kt:16)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1638)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.view.ViewPager.populate(ViewPager.java:1240)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:389)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3143)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.View.measure(View.java:20166)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2644)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1599)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1891)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1487)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7450)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:695)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:631)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.os.Looper.loop(Looper.java:158)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7229)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
02-07 15:56:16.211 29688 29688 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I am getting it after `FragmentPagerAdapter.getItem` calls my Fragment's constructor. My fragment itself is quite simple:
```class FirstFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View?
= FragmentUi<Fragment>().createView(AnkoContext.create(ctx, this))
}
and
class FragmentUi<T>: AnkoComponent<T> {
override fun createView(ui: AnkoContext<T>) = with(ui) {
verticalLayout {
textView { text = "foo" }
}
}
}
It seems like SupportContextUtilsKt.getCtx is causing this error so hacking at the problem is difficult - is there any reason it cannot get to the getActivity method of my Fragment. Should I be using another implementation of Fragment (I am using the support.v4 one so that I can use the FragmentPagerAdapter and ViewPager)?
I am having the same problem for every Anko method that uses getActivity(): android.app.Activity somehow inside Support Fragment
Looks like there is a Stack Overflow question reporting the same issue w/ Toasts.
http://stackoverflow.com/questions/41932223/anko-toast-method-causes-java-lang-nosuchmethoderror-when-called-from-fragment
Looks like this problem does not happen in 0.8.3 but appears with 0.9.1.
I change 'ctx' into 'activity' (since Activity extends Context) and... it work.
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View?
= FragmentUi<Fragment>().createView(AnkoContext.create(activity, this))
}
Yup, that works!
@mikesol
this bug also doesn't appear in 0.9
ext.anko_version = "0.9"
Yes, I'm also experiencing this with startActivity<>
also happens in
doAsync(exceptionHandler) {
// something time consuming
supportFragmentUiThread {
// do something
}
}
hi am having issue with sign in using gmail in my android application.
java.lang.NoSuchMethodError: No virtual method zzait()Ljava/util/ArrayList;
and the error is pointing to addApi(Auth.GOOGLE_SIGN_IN_API, gso).
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();