您好,我试图调用自定义偏好设置。为什么应用程序崩溃?
当我在preference.xml中设置自定义首选项时,应用程序会在" com.appdev.customprefs.SeekBarPreference"中断。我希望它使用SeekBarPreference.java,我想我需要包含package.SeekBarPreference才能使它工作。
XML /的preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.appdev.customprefs.SeekBarPreference
android:title="Custom Preference"
android:key="customPref"
android:defaultValue="32""/>
</PreferenceScreen>
栈跟踪
11-17 20:02:17.920:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:18.100:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:18.100:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.080:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.080:I / Choreographer(1482):跳过41帧!应用程序可能在其主线程上做了太多工作。 11-17 20:02:19.080:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.110:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.130:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.271:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.271:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.290:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.340:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.360:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.360:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.360:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.360:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.360:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.380:D / gralloc_goldfish(1482):未检测到GPU仿真的仿真器。 11-17 20:02:19.530:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:19.580:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:21.980:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:21.980:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.011:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.020:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.080:D / dalvikvm(1482):GC_FOR_ALLOC释放115K,9%释放2602K / 2836K,暂停39ms,总计42ms 11-17 20:02:22.090:I / dalvikvm-heap(1482):将堆(frag case)增长到3.259MB,用于635812字节分配 11-17 20:02:22.200:D / dalvikvm(1482):GC_FOR_ALLOC释放3K,7%空闲3220K / 3460K,暂停120ms,总计120ms 11-17 20:02:22.470:D / dalvikvm(1482):GC_CONCURRENT释放<1K,7%自由3239K / 3460K,暂停81ms + 130ms,总计266ms 11-17 20:02:22.521:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.530:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.580:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.710:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.760:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.760:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.790:I / Choreographer(1482):跳过67帧!应用程序可能在其主线程上做了太多工作。 11-17 20:02:22.790:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.790:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.810:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.860:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.870:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.910:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.960:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:22.960:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.010:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.020:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.080:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.160:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.852:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.852:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.890:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.890:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.920:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.920:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.970:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.970:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.970:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:23.970:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.010:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.010:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.030:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.030:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.050:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.050:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.142:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.142:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.180:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.180:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.554:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.572:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.650:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.650:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.650:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.650:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.670:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.670:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.810:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.810:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.820:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.820:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.820:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.880:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:24.940:W / Trace(1482):来自nativeGetEnabledTags的意外值:0 11-17 20:02:25.410:D / AndroidRuntime(1482):关闭VM 11-17 20:02:25.410:W / dalvikvm(1482):threadid = 1:线程退出未捕获异常(组= 0x40a70930) 11-17 20:02:25.540:E / AndroidRuntime(1482):致命异常:主要 11-17 20:02:25.540:E / AndroidRuntime(1482):java.lang.RuntimeException:无法启动活动ComponentInfo {com.appdev.customprefs / com.appdev.customprefs.preferences}:android.view.InflateException:Binary XML文件行#4:错误输出类com.appdev.customprefs.SeekBarPreference 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread.access $ 600(ActivityThread.java:141) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.os.Handler.dispatchMessage(Handler.java:99) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.os.Looper.loop(Looper.java:137) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread.main(ActivityThread.java:5039) 11-17 20:02:25.540:E / AndroidRuntime(1482):at java.lang.reflect.Method.invokeNative(Native Method) 11-17 20:02:25.540:E / AndroidRuntime(1482):at java.lang.reflect.Method.invoke(Method.java:511) 11-17 20:02:25.540:E / AndroidRuntime(1482):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 11-17 20:02:25.540:E / AndroidRuntime(1482):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 11-17 20:02:25.540:E / AndroidRuntime(1482):at dalvik.system.NativeStart.main(Native Method) 11-17 20:02:25.540:E / AndroidRuntime(1482):引起:android.view.InflateException:二进制XML文件行#4:错误扩展类com.appdev.customprefs.SeekBarPreference 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.createItem(GenericInflater.java:386) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.createItemFromTag(GenericInflater.java:430) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.rInflate(GenericInflater.java:481) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.rInflate(GenericInflater.java:493) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.inflate(GenericInflater.java:326) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.inflate(GenericInflater.java:263) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:269) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.PreferenceActivity.addPreferencesFromResource(PreferenceActivity.java:1424) 11-17 20:02:25.540:E / AndroidRuntime(1482):at com.appdev.customprefs.preferences.onCreate(preferences.java:12) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.Activity.performCreate(Activity.java:5104) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 11-17 20:02:25.540:E / AndroidRuntime(1482):... 11更多 11-17 20:02:25.540:E / AndroidRuntime(1482):引起:java.lang.NoSuchMethodException:[class android.content.Context,interface android.util.AttributeSet] 11-17 20:02:25.540:E / AndroidRuntime(1482):at java.lang.Class.getConstructorOrMethod(Class.java:460) 11-17 20:02:25.540:E / AndroidRuntime(1482):at java.lang.Class.getConstructor(Class.java:431) 11-17 20:02:25.540:E / AndroidRuntime(1482):在android.preference.GenericInflater.createItem(GenericInflater.java:377) 11-17 20:02:25.540:E / AndroidRuntime(1482):... 22更多 11-17 20:02:28.760:I / Process(1482):发送信号。 PID:1482 SIG:9
SeekBarPreference.java
public class SeekBarPreference extends Preference implements OnSeekBarChangeListener
{
public SeekBarPreference(Context context)
{
super(context);
Log.i("SBP", "In SBP!");
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
protected View onCreateView(ViewGroup parent) {
Log.i("SBP", "In SBP2!");
return super.onCreateView(parent);
}
}
答案 0 :(得分:2)
您只实现了一个构造函数。为了能够使用Preference,您应该从Preference实现另外两个构造函数:
还要实现这两个构造函数:
Preference(Context context, AttributeSet attrs)
Preference(Context context, AttributeSet attrs, int defStyle)
在这里你的日志: 引起:java.lang.NoSuchMethodException:[class android.content.Context,interface android.util.AttributeSet]