使用RecyclerView實現QQ空間廣告位一個位置兩個圖時偶遇bug
阿新 • • 發佈:2019-01-23
前段時間就發現手機qq空間內,在動態中插入的廣告在滑動的時候有貓膩(一個位置來回切換兩張廣告圖),一直想要去實現這個效果,但是一直都沒有時間去研究,昨天刷空間的時候就又看到了這個效果,所以就在網上找了個帖子在午飯時間研究了一下,不是很複雜,就敲了敲,練了練手。結果執行的時候居然報了下面這個錯,我就很不開森了,然後仔細研究了一下這個錯。 錯誤 如下:
FATAL EXCEPTION: main Process: com.example.coco.qqzoneadertising, PID: 19774 java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/com.example.coco.qqzoneadertising-2/split_lib_dependencies_apk.apk) at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:110) at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:81) at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:71) at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:67) at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:753) at android.support.v7.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:261) at android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243) at android.support.v7.widget.ActionBarOverlayLayout.setWindowTitle(ActionBarOverlayLayout.java:621) at android.support.v7.app.AppCompatDelegateImplV9.onTitleChanged(AppCompatDelegateImplV9.java:631) at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) at com.example.coco.qqzoneadertising.MainActivity.onCreate(MainActivity.java:15) at android.app.Activity.performCreate(Activity.java:6083) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1115) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2357) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2466) at android.app.ActivityThread.access$900(ActivityThread.java:175) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5418) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
乍一看是沒有此方法,其實問題的真正原因是 下圖標註;
recyclerview的v7包和appcompat的版本不一致導致,將recycler view的改為26.1.0時,再執行的時候就好了,完美解決
具體的效果實現請移步我的GitHub:點選開啟連結 歡迎 fork || star。
如有錯誤,請指正,謝謝。