安卓開發中遇到的奇奇怪怪的問題(二)

接着早前的安卓開發中遇到的奇奇怪怪的問題(一) ,再向大家分享我在項目中遇到的奇怪問題。希望對大家有幫助。

1.RecyclerView自動滾動

之前碰到的一個奇怪問題:RecyclerView 嵌套 RecyclerView,結果內部的RecyclerView會自動的滑動至頂部。最終找到了解決方法:RecyclerView常見問題解決方案

兩種解決辦法:

一. 內部Recyclerview去除焦點,父佈局裏獲得焦點。

recyclerview.setFocusableInTouchMode(false);
recyclerview.requestFocus();

比如父佈局的一個textview。

textview.setFocusableInTouchMode(true);  
textview.requestFocus(); 

二. 內部的Recyclerview加

android:overScrollMode="never"

父佈局覆蓋子VIew獲取焦點:

android:descendantFocusability="blocksDescendants"

當然不推薦使用RecyclerView 嵌套 RecyclerView這種寫法了。。。

2.NumberFormatException

起因是Bugly上報了一個錯誤:

這裏寫圖片描述

說是我格式化“0,00”這樣的一個字符串。代碼大致如下:

String.format("%.2f", number);

排除了格式字符串的問題後我就納悶了。中間經過了大量的搜索。。。,發現是格式化的問題。也就是在不指定Locale時,是跟隨系統語言。在法語、德語、意大利語的語言中,格式化小數是逗號的。所以解決方法:

String.format(Locale.CHINA, "%.2f", number);

3.SecurityException

在之前項目中做了6.0的動態權限後,Bugly報錯如下:

這裏寫圖片描述

更奇怪的是報錯的全部都是6.0的手機。

這裏寫圖片描述

查了一下,找到了問題。發現是6.0的一個bug,在部分6.0上CHANGE_NETWORK_STATE權限獲取不到,那麼只能去獲取WRITE_SETTINGS這個權限了。這個問題已經在6.0.1修復了。附上鍊接地址

既然是6.0的問題,我們可以對6.0進行單獨處理。拋出異常處或者在使用CHANGE_NETWORK_STATE權限前跳轉到系統設置頁去設置。

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
     if (!Settings.System.canWrite(context)) {
         Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
         intent.setData(Uri.parse("package:" + context.getPackageName()));
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(intent);
      } 
}             

當然也可以參考這位兄弟的方法:Android 6 完美解決 WRITE_SETTINGS 權限設置問題

4.WebView中Http和Https加載問題

比如https頁面加載http圖片或者http頁面加載https圖片時圖片顯示不出來,原因是因爲在Android 5.0開始WebView默認不允許加載http與https混合頁面,

解決辦法:

//https與http混合資源處理
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

當然最好還是不要混合,保持統一。

5.一些注意點

6.參考

暫時就這麼多了,都是乾貨。碼字不易,多多點贊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章