2014-05-23 46 views
-4

非常奇怪的bugListPreference android 2.3.3 setIcon:NoSuchMethodError

我在android上使用ListPreference。而在三星GIO S5660使用的setIcon()方法爲它與Android 2.3.3當我已經有了:

05-23 14:14:31.169: E/AndroidRuntime(1572): FATAL EXCEPTION: main 
05-23 14:14:31.169: E/AndroidRuntime(1572): java.lang.NoSuchMethodError: android.preference.ListPreference.setIcon 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at com.assignmentexpert.AssignmentPref.enableOnlyAssignmentProduct(AssignmentPref.java:2022) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at com.assignmentexpert.AssignmentPref.onResume(AssignmentPref.java:2003) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.Activity.performResume(Activity.java:3832) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2114) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:170) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:321) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:676) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.widget.TabHost.setCurrentTab(TabHost.java:348) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:141) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.view.View.performClick(View.java:2485) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.view.View$PerformClick.run(View.java:9080) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.os.Handler.handleCallback(Handler.java:587) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.os.Looper.loop(Looper.java:123) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-23 14:14:31.169: E/AndroidRuntime(1572):  at dalvik.system.NativeStart.main(Native Method) 

怪事是,當我在的Nexus 7推出它,它工作正常。相同的代碼庫!

它有什麼問題?在API 11中添加

+1

你檢查ListPreference文檔......下一次,請做一些研究befor問 – Selvin

+1

這問題似乎是無關緊要的,因爲它沒有顯示研究的努力 –

回答

1

你minising我。好。但最好給這個問題提供一些可用的解決方案。但是放置缺陷更容易。

這是ListPreference解決方案,可操作性較低,然後蜂窩的Android得:

public class IconPreference extends ListPreference { 

private Drawable mIcon; 

public IconPreference(Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
} 

public IconPreference(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs); 
    setLayoutResource(R.layout.icon_pref); 
    TypedArray a = context.obtainStyledAttributes(attrs, 
      R.styleable.IconPreference, defStyle, 0); 
    mIcon = a.getDrawable(R.styleable.IconPreference_icon); 
} 

@Override 
public void onBindView(View view) { 
    super.onBindView(view); 
    ImageView imageView = (ImageView) view.findViewById(R.id.icon); 
    if (imageView != null && mIcon != null) { 
     imageView.setImageDrawable(mIcon); 
    } 
} 

public void setIcon(Drawable icon) { 
    if ((icon == null && mIcon != null) || (icon != null && !icon.equals(mIcon))) { 
     mIcon = icon; 
     notifyChanged(); 
    } 
} 

public Drawable getIcon() { 
    return mIcon; 
} 

}

1

setIcon方法,因此,如果您嘗試它調用API < 11,那麼你將得到一個NoSuchMethodError