1. 程式人生 > 其它 >安卓Warning:Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using th

安卓Warning:Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using th

技術標籤:Androidandroid安卓

問題描述

對三個按鈕進行監聽,用Id分辨哪一個按鈕是哪一個。degub沒有error,但是在commit的時候有點tip,然後review了下發現三個Warning!!! - Warning:(40, 22) Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them in switch case statements

在這裡插入圖片描述

作為一個垃圾碼農,0Warining是一種習慣。

//  按鈕監聽方法
    class MyClickListener implements View.OnClickListener{
@Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_back: Log.d("btn listener:", "btn_back is clicked"); break; case R.id.btn_forget: Log.d(
"btn listener:", "btn_forget is clicked"); break; case R.id.btn_login: Log.d("btn listener:", "_login is clicked"); break; default: Log.d("btn listener:"
,"something is clicked"); break; } } }

問題查詢

大致意思是Id已經在新版本中一種不是final了,而是可以修改的變數。。。。也就是靠資源Id無法辨別誰是誰???我去,那用什麼分辨你是你,我是我???

解決辦法

谷歌開發者網站一時半會上不去。。。。找不到官方原版就暫時bing一下吧。。

Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them in switch case - 世外大帝:三種方案: 強制壓制警告、if、手動final

Non-constant Fields in Case Labels - Android Studio Project Site:用if else 替代switch

The solution for this is simple: Convert the switch statement into an if-else statement.

public void onClick(View v) {
    int id = v.getId();
    if( id == R.id.btn_back){
        Log.d("btn listener:", "btn_back is clicked");

    }else if( id == R.id.btn_forget){
        Log.d("btn listener:", "btn_forget is clicked");
        
    }else if( id == R.id.btn_login){
        Log.d("btn listener:","something is clicked");
       
    }
}

參考