2014-05-23 3 views
-4

아주 이상한 버그 내가 안드로이드에 ListPreference를 사용ListPreference 안드로이드 2.3.3의 setIcon : NoSuchMethodError

. 안드로이드 2.3.3와 삼성 지오 S5660에 대한의 setIcon() 메소드를 사용하는 경우 그리고있어 :

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) 

이상한 것들 내가 넥서스 7을 시작할 때, 제대로 작동하는 것입니다. 동일한 코드 기반!

무엇이 잘못 되었나요?

+1

는 – Selvin

+1

이 요청 befor를 ... 다음 번에, 약간 연구를하십시오 ListPreference 설명서를 확인 않았다 연구에 아무런 노력을 보이지 않기 때문에 질문이 화제 인 것으로 보인다. –

답변

1

을 얻을 것이다 API 11에서 추가되었다. 승인. 그러나 문제에 대한 해결책을 제시하는 것이 좋습니다. 그러나 손해를 두는 것이 더 쉽습니다.

이것은 ListPreference에 대한 솔루션도 벌집 안드로이드 다음 낮은에 가능한 것입니다 :

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 다음 당신은 나를 위해 minising NoSuchMethodError