2016-06-26 87 views
0

我有些崩潰報告說:NoSuchMethodErrorRecyclerViewsonBindViewHolder這僅發生於低價手機,如:onBindViewHolder的便宜手機NoSuchMethodError?

Event (C5133) 
COSMOTE_MY_TAB_ICS 
Lenovo A390 (A390) 
Xperia Miro (ST23i) 
Galaxy Tab2 7.0 (espressorf) 

Android版本爲所有這些設備是:安卓4.0.3 - 4.0.4

錯誤堆棧:

java.lang.NoSuchMethodError: android.view.View.setBackground 
    at org.m.muddzboy.QuoteCreator.Background.ColorButtonAdapter.onBindViewHolder(ColorButtonAdapter.java:124) 
    at org.m.muddzboy.QuoteCreator.Background.ColorButtonAdapter.onBindViewHolder(ColorButtonAdapter.java:24) 

這是我onBindViewHolder:

,這是非常簡單,不到風度包含很多代碼

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    if (position == 0) { 

     holder.colorButton.setBackgroundResource(R.drawable.colorpicker2); 

    } else { 

     gd = (GradientDrawable) App.getAppContext().getResources().getDrawable(R.drawable.bbtn); 
     gd.setColor(Color.parseColor(colorslist.get(position))); 
     //this crash -> holder.itemView.setBackground(gd); 

    } 

} 

那麼是什麼問題?因爲我的應用程序可以與所有非廉價/中文電話完美兼容。這可以解決嗎?在API 16中添加

+2

'查看#的setBackground(可繪製背景)'在API 16中引入,你的設備是舊的 – pskink

+0

@pskink我怎麼能支持舊設備,則? – Muddz

+0

閱讀'android.view.View'文檔 – pskink

回答

1

setBackground方法,所以如果你在低於測試它,它會給NoSuchMethodError

Check this link for api level details

如果你想支持它下面Api 16。你已經使用

setBackgroundDrawable

像這樣

int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    setBackgroundDrawable(); 
} else { 
    setBackground(); 
}