1.?環(huán)境問題
2018-7-25
問題:AVD啟動不了 ——?報x86需要加速程序錯誤 ——?在SDK管理器中重新安裝這個組件出錯 ——?報Hyper-V Hyper-Vx沖突
解決:win10 ——?控制面板 》程序與功能 》啟用或關(guān)閉Windows功能 ——?取消選擇Hyper-V
2. AndroidStudio問題
2021-02-16
問題:對 drawable layout 進行大量替換和修改,編譯出錯:AAPT: error drawable not found
解決:沒有解決了,無論怎么刷新、重啟、修改、刪除新增都不行,只能重新建一個項目,復(fù)制文件。
更新:是界面新版本,drawable xml 不能設(shè)置 tint
2020-9-28
問題:應(yīng)用崩潰后重啟,看不到日志
解決:在Logcat選擇崩潰的包名查看日志,xxx.xxx.xxx 【DEAD】
2018-9-24
問題:Kotlin not configed
解決:項目七轉(zhuǎn)八轉(zhuǎn),一頓瞎操作,最后把kotlin的版本都弄錯了,在項目build.gradle中把kotlin版本改回與gradle相對應(yīng)版本(會有提示)。
2018-9-24
問題:Android Studio?抽風(fēng),?不停報錯:Stub index points to a file without PSI: com.intellij.openapi.fileTypes ... ...?
解決:File》Invalidate Cashes / Restart
2018-7-31
問題:真機測試時,安裝應(yīng)用失敗,卸載了之前版本也沒有
解決:Android studio —— File》Settings》Build》Instant Run ——?取消選擇Enable Instant Run ...
后續(xù)(2018.9.21):發(fā)現(xiàn)?Instant Run?還是挺有用的,打開此功能,將 app》build》intermediates?文件夾刪掉再編譯運行,可以用了
3.?代碼問題
2021-11-04
問題:Android 6.0 之前使用代碼設(shè)置LinearLayout子View 的 margin,有時候會無效
原因:不同版本LinearLayout.generateLayoutParams方法不一樣,新版本會處理參數(shù)是MarginLayoutParams時候的情況。舊版下,會因為此方法沒有處理,導(dǎo)致LinearLayout.addView方法,會因參數(shù)是MarginLayoutParams而不是LinearLayout.LayoutParams時,丟掉margin信息。
解決:addView時確保使用的是LinearLayout.LayoutParams。同理,RelativeLayout也一樣。
2021-05-14
問題:RecyclerView setAdapter 與 adapter.notifyDatasetChanged 幾乎同時執(zhí)行時,顯示異常
解決:只執(zhí)行一個
2021-04-04
問題:給LinearLayout 或者 RecyclerView設(shè)置.9圖之后,子View的位置發(fā)生變化。
原因:可能是個BUG,改變View背景可能會改變view的padding
解決:設(shè)置背景后,重新設(shè)置padding
2020-12-16
問題:RecyclerView的報錯 Inconsistency detected. Invalid view holder adapter positionViewHolder
原因:數(shù)據(jù)list內(nèi)容改變后,沒有及時通知列表內(nèi)容變化。要保證先改變list,后通知,并且在同一線程順序執(zhí)行。
2020-12-14
問題:AlarmManager無法傳遞PendingIntent中的Parcelable類型Extra。設(shè)置了Parcelable的extra之后,不僅這個數(shù)據(jù)丟失,連同一起設(shè)置的其他extra一起丟失。
原因:網(wǎng)絡(luò)上的解釋是系統(tǒng)如果需要修改Intent時,需要重建intent的extra,而系統(tǒng)沒有自定義的類,這個步驟會崩潰,鬧鐘觸發(fā)時只會得到空數(shù)據(jù)。
解決:Anroid N之前還可能用。之后只能設(shè)置基本類型數(shù)據(jù),或者將Parcelable轉(zhuǎn)為基本類型傳遞。
2020-5-4
問題: View先從父View中移除再添加,依然報已有父View的錯誤
原因:View在從父View中移除時,有Translation動畫,還沒有真正從父View中移除??丛创a好像是低版本的BUG,當(dāng)前出現(xiàn)問題的系統(tǒng) Android 7.0
2020-4-5
問題:GridLayout?動態(tài)添加控件不顯示,Android 6.0以上系統(tǒng)測試正常,向下兼容時出現(xiàn)。
原因:引用的是?android.widget.GridLayout
解決:添加依賴:implementation"androidx.gridlayout:gridlayout:1.0.0",并引用?androidx.gridlayout.widget.GridLayout??磥韆ndroid.widget.GridLayout已經(jīng)被拋棄了。但竟然可以在高版本使用,F(xiàn)**K。
2019-4-3
問題:ViewGroup啟用LayoutTransition時,動態(tài)添加這個ViewGroup自己卻有動畫
原因:本以為?LayoutTransition只作用于ViewGroup的子View,但是LayoutTransition類源碼runChangeTransition函數(shù)顯示:如果 mAnimateParentHierarchy?為true,啟用ViewGroup的父ViewGroup的動畫,作用于當(dāng)前ViewGroup。
解決:transition.setAnimateParentHierarchy(false)
2019-2-13
問題:RecyclerView?滾動之后?item?點擊事件失效,表現(xiàn)為點擊兩次或過一會兒點擊生效
原因:RecyclerView?嵌套在CoordinatorLayout中產(chǎn)生此問題,RecyclerView?滾動表面上結(jié)束了,內(nèi)容還處于Fling狀態(tài),不能響應(yīng)點擊。RecyclerView 28.0.0?版本在修復(fù)舊版本問題的時候引入此新?BUG。
解決:禁止直接嵌套。
2018-9-18
問題:自定義TextView初始化時 SingleLine?屬性與?Gravity.Center?混用,導(dǎo)致不繪制
解決:這是TextView的一個Bug,沒辦法,估計Google也不會注意到這個問題上來。
2018-8-10
問題:自定義屬性 obtainStyledAttributes?死活找不到?R.styleable.xxx?但是能找到?R.styleable.xxx_xxx
解決:錯誤提示垃圾了,其實是 attrs.xml?出現(xiàn)了問題。我的問題:
1、有重復(fù)?attr?屬性名稱,將重復(fù)的屬性名稱移動到 declare-styleable?外面,引用時只包含名稱。
2、attr?名稱有一個是 “new”?系統(tǒng)不接受,也不提示錯誤 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?上這個問題持續(xù)問了六年,不斷有人回答,討論,結(jié)果仍然不夠明朗。
解決:其實只需要給?ViewPager 重新設(shè)置一次更新數(shù)據(jù)了的?PagerAdapter?即可。這并沒有損失多少性能,重新設(shè)置 adpater?與?return POSITION_NONE?是一個原理,重新生成了2~3個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?中的一個View共享,使用共享元素動畫在二者間跳轉(zhuǎn),?為了動畫更柔和沒有閃爍,從?B?返回 A?時先通過 BroadcastReceiver?把數(shù)據(jù)返回來,?更新了 A?中?item,使用了?RecyclerView?的?notifyItemChanged(position:Int),共享元素動畫結(jié)束時報錯。
原因:經(jīng)測試,不同系統(tǒng)版本,不同 RecyclerView?版本(27.1.1?與 26.1.0)表現(xiàn)不一樣,以上問題發(fā)生在使用?notifyItemChanged(position:int)?會重新調(diào)用?onCreateViewHolder?即使?Item?還在可視區(qū),這個調(diào)用導(dǎo)致共享元素發(fā)生變化,不再是同一個View,從而使?B?返回?A?時的動畫找不到原來的?View?報錯。
解決:改調(diào)用?notifyItemChaned(position: Int, payload: Object),payload?傳 0?即可。