1.?環(huán)境問題
2018-7-25
問題:AVD啟動(dòng)不了 ——?報(bào)x86需要加速程序錯(cuò)誤 ——?在SDK管理器中重新安裝這個(gè)組件出錯(cuò) ——?報(bào)Hyper-V Hyper-Vx沖突
解決:win10 ——?控制面板 》程序與功能 》啟用或關(guān)閉Windows功能 ——?取消選擇Hyper-V
2. AndroidStudio問題
2021-02-16
問題:對(duì) drawable layout 進(jìn)行大量替換和修改底洗,編譯出錯(cuò):AAPT: error drawable not found
解決:沒有解決了,無論怎么刷新十酣、重啟馅闽、修改、刪除新增都不行熙参,只能重新建一個(gè)項(xiàng)目艳吠,復(fù)制文件。
更新:是界面新版本孽椰,drawable xml 不能設(shè)置 tint
2020-9-28
問題:應(yīng)用崩潰后重啟昭娩,看不到日志
解決:在Logcat選擇崩潰的包名查看日志,xxx.xxx.xxx 【DEAD】
2018-9-24
問題:Kotlin not configed
解決:項(xiàng)目七轉(zhuǎn)八轉(zhuǎn)黍匾,一頓瞎操作栏渺,最后把kotlin的版本都弄錯(cuò)了,在項(xiàng)目build.gradle中把kotlin版本改回與gradle相對(duì)應(yīng)版本(會(huì)有提示)锐涯。
2018-9-24
問題:Android Studio?抽風(fēng)磕诊,?不停報(bào)錯(cuò):Stub index points to a file without PSI: com.intellij.openapi.fileTypes ... ...?
解決:File》Invalidate Cashes / Restart
2018-7-31
問題:真機(jī)測(cè)試時(shí),安裝應(yīng)用失敗纹腌,卸載了之前版本也沒有
解決:Android studio —— File》Settings》Build》Instant Run ——?取消選擇Enable Instant Run ...
后續(xù)(2018.9.21):發(fā)現(xiàn)?Instant Run?還是挺有用的霎终,打開此功能,將 app》build》intermediates?文件夾刪掉再編譯運(yùn)行升薯,可以用了
3.?代碼問題
2021-11-04
問題:Android 6.0 之前使用代碼設(shè)置LinearLayout子View 的 margin莱褒,有時(shí)候會(huì)無效
原因:不同版本LinearLayout.generateLayoutParams方法不一樣,新版本會(huì)處理參數(shù)是MarginLayoutParams時(shí)候的情況涎劈。舊版下广凸,會(huì)因?yàn)榇朔椒]有處理,導(dǎo)致LinearLayout.addView方法蛛枚,會(huì)因參數(shù)是MarginLayoutParams而不是LinearLayout.LayoutParams時(shí)谅海,丟掉margin信息。
解決:addView時(shí)確保使用的是LinearLayout.LayoutParams蹦浦。同理扭吁,RelativeLayout也一樣。
2021-05-14
問題:RecyclerView setAdapter 與 adapter.notifyDatasetChanged 幾乎同時(shí)執(zhí)行時(shí),顯示異常
解決:只執(zhí)行一個(gè)
2021-04-04
問題:給LinearLayout 或者 RecyclerView設(shè)置.9圖之后智末,子View的位置發(fā)生變化谅摄。
原因:可能是個(gè)BUG,改變View背景可能會(huì)改變view的padding
解決:設(shè)置背景后系馆,重新設(shè)置padding
2020-12-16
問題:RecyclerView的報(bào)錯(cuò) Inconsistency detected. Invalid view holder adapter positionViewHolder
原因:數(shù)據(jù)list內(nèi)容改變后送漠,沒有及時(shí)通知列表內(nèi)容變化。要保證先改變list由蘑,后通知闽寡,并且在同一線程順序執(zhí)行。
2020-12-14
問題:AlarmManager無法傳遞PendingIntent中的Parcelable類型Extra尼酿。設(shè)置了Parcelable的extra之后爷狈,不僅這個(gè)數(shù)據(jù)丟失,連同一起設(shè)置的其他extra一起丟失裳擎。
原因:網(wǎng)絡(luò)上的解釋是系統(tǒng)如果需要修改Intent時(shí)涎永,需要重建intent的extra,而系統(tǒng)沒有自定義的類鹿响,這個(gè)步驟會(huì)崩潰羡微,鬧鐘觸發(fā)時(shí)只會(huì)得到空數(shù)據(jù)。
解決:Anroid N之前還可能用惶我。之后只能設(shè)置基本類型數(shù)據(jù)妈倔,或者將Parcelable轉(zhuǎn)為基本類型傳遞。
2020-5-4
問題: View先從父View中移除再添加绸贡,依然報(bào)已有父View的錯(cuò)誤
原因:View在從父View中移除時(shí)盯蝴,有Translation動(dòng)畫,還沒有真正從父View中移除听怕∨跬Γ看源碼好像是低版本的BUG,當(dāng)前出現(xiàn)問題的系統(tǒng) Android 7.0
2020-4-5
問題:GridLayout?動(dòng)態(tài)添加控件不顯示叉跛,Android 6.0以上系統(tǒng)測(cè)試正常松忍,向下兼容時(shí)出現(xiàn)蒸殿。
原因:引用的是?android.widget.GridLayout
解決:添加依賴:implementation"androidx.gridlayout:gridlayout:1.0.0"筷厘,并引用?androidx.gridlayout.widget.GridLayout『晁看來android.widget.GridLayout已經(jīng)被拋棄了酥艳。但竟然可以在高版本使用,F(xiàn)**K爬骤。
2019-4-3
問題:ViewGroup啟用LayoutTransition時(shí)充石,動(dòng)態(tài)添加這個(gè)ViewGroup自己卻有動(dòng)畫
原因:本以為?LayoutTransition只作用于ViewGroup的子View,但是LayoutTransition類源碼runChangeTransition函數(shù)顯示:如果 mAnimateParentHierarchy?為true霞玄,啟用ViewGroup的父ViewGroup的動(dòng)畫骤铃,作用于當(dāng)前ViewGroup拉岁。
解決:transition.setAnimateParentHierarchy(false)
2019-2-13
問題:RecyclerView?滾動(dòng)之后?item?點(diǎn)擊事件失效,表現(xiàn)為點(diǎn)擊兩次或過一會(huì)兒點(diǎn)擊生效
原因:RecyclerView?嵌套在CoordinatorLayout中產(chǎn)生此問題惰爬,RecyclerView?滾動(dòng)表面上結(jié)束了喊暖,內(nèi)容還處于Fling狀態(tài),不能響應(yīng)點(diǎn)擊撕瞧。RecyclerView 28.0.0?版本在修復(fù)舊版本問題的時(shí)候引入此新?BUG陵叽。
解決:禁止直接嵌套。
2018-9-18
問題:自定義TextView初始化時(shí) SingleLine?屬性與?Gravity.Center?混用丛版,導(dǎo)致不繪制
解決:這是TextView的一個(gè)Bug巩掺,沒辦法,估計(jì)Google也不會(huì)注意到這個(gè)問題上來页畦。
2018-8-10
問題:自定義屬性 obtainStyledAttributes?死活找不到?R.styleable.xxx?但是能找到?R.styleable.xxx_xxx
解決:錯(cuò)誤提示垃圾了胖替,其實(shí)是 attrs.xml?出現(xiàn)了問題。我的問題:
1豫缨、有重復(fù)?attr?屬性名稱刊殉,將重復(fù)的屬性名稱移動(dòng)到 declare-styleable?外面,引用時(shí)只包含名稱州胳。
2记焊、attr?名稱有一個(gè)是 “new”?系統(tǒng)不接受,也不提示錯(cuò)誤 f*******k?
2018-8-2
問題:?ViewPager使用栓撞,PagerAdapter.notifyDataSetChanged()不更新數(shù)據(jù)遍膜。
過程:網(wǎng)上回答比較多的是 getItemPosition?return POSITION_NONE,還有其他使用?FragmentPagerAdapter瓤湘,F(xiàn)ragmentStatePagerAdapter的瓢颅,復(fù)寫了其他方法的,統(tǒng)統(tǒng)嘗試了在我的工況下沒有效果弛说。
結(jié)果:stackoverflow?上這個(gè)問題持續(xù)問了六年挽懦,不斷有人回答,討論木人,結(jié)果仍然不夠明朗信柿。
解決:其實(shí)只需要給?ViewPager 重新設(shè)置一次更新數(shù)據(jù)了的?PagerAdapter?即可。這并沒有損失多少性能醒第,重新設(shè)置 adpater?與?return POSITION_NONE?是一個(gè)原理渔嚷,重新生成了2~3個(gè)View而已。
2018-7-31
問題:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.transformMatrixToGlobal(android.graphics.Matrix)' on a null object reference
工況:Activity A?中的 RecyclerView?中的 item?與?Activity B?中的一個(gè)View共享稠曼,使用共享元素動(dòng)畫在二者間跳轉(zhuǎn)形病,?為了動(dòng)畫更柔和沒有閃爍,從?B?返回 A?時(shí)先通過 BroadcastReceiver?把數(shù)據(jù)返回來,?更新了 A?中?item漠吻,使用了?RecyclerView?的?notifyItemChanged(position:Int)量瓜,共享元素動(dòng)畫結(jié)束時(shí)報(bào)錯(cuò)。
原因:經(jīng)測(cè)試途乃,不同系統(tǒng)版本榔至,不同 RecyclerView?版本(27.1.1?與 26.1.0)表現(xiàn)不一樣,以上問題發(fā)生在使用?notifyItemChanged(position:int)?會(huì)重新調(diào)用?onCreateViewHolder?即使?Item?還在可視區(qū)欺劳,這個(gè)調(diào)用導(dǎo)致共享元素發(fā)生變化唧取,不再是同一個(gè)View,從而使?B?返回?A?時(shí)的動(dòng)畫找不到原來的?View?報(bào)錯(cuò)划提。
解決:改調(diào)用?notifyItemChaned(position: Int, payload: Object)枫弟,payload?傳 0?即可。