Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自动强制关闭_Android_Exception_Preference_Forceclose_Dialog Preference - Fatal编程技术网

Android 自动强制关闭

Android 自动强制关闭,android,exception,preference,forceclose,dialog-preference,Android,Exception,Preference,Forceclose,Dialog Preference,对于一个学校项目,我正在使用PreferenceScreens作为框架构建一个应用程序。 我已经创建了两个新类来满足我的需要:SeekBarDialogPreference(设计用于处理音量和亮度)和DigitalPreference(用于其他所有内容) 这是统一的顶部,这是主页 public class TopPage extends PreferenceActivity { @Override public void onCreate(Bundle allthethings

对于一个学校项目,我正在使用
PreferenceScreen
s作为框架构建一个应用程序。
我已经创建了两个新类来满足我的需要:
SeekBarDialogPreference
(设计用于处理音量和亮度)和
DigitalPreference
(用于其他所有内容)

这是统一的顶部,这是主页

public class TopPage extends PreferenceActivity {

    @Override
    public void onCreate(Bundle allthethings) {
        super.onCreate(allthethings);
        Map<String, ?> shareprefs = PreferenceManager.getDefaultSharedPreferences(this).getAll();
        addPreferencesFromResource(R.xml.prefs);

    }

    @Override
    public void onStart() {
        getPrefs();
    }

    private SeekBarDialogPreference makeSeekBar(Preference pref) {
    return (SeekBarDialogPreference) findPreference(pref.getKey());
    }

    private DigitalPreference makeDigital(Preference pref) {
        return (DigitalPreference) findPreference(pref.getKey());
    }

    private void setClickListener(Preference preference, final boolean isSeekBar) {
        preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            public boolean onPreferenceClick(Preference pref) {
                if (isSeekBar) {
                    makeSeekBarDialogPreference(pref).show();
                } else {
                    makeDigitalPreference(pref).show();
                }
                return true;
            }
        });
    }

    public void getPrefs() {

        SeekBarDialogPreference Ringvolume_preference = (SeekBarDialogPreference) findPreference("Ringvolume_preference");
        setClickListener(Ringvolume_Preference, true);

        //Instantiated each Preference and attached a ClickListener to each
}
public class TopPage扩展了PreferenceActivity{
@凌驾
创建时的公共void(捆绑所有内容){
super.onCreate(所有内容);
Map shareprefs=PreferenceManager.GetDefaultSharedReferences(this.getAll();
addPreferencesFromResource(R.xml.prefs);
}
@凌驾
public void onStart(){
getPrefs();
}
专用SeekbardiologPreference makeSeekBar(首选项pref){
return(SeekBarDialogPreference)findPreference(pref.getKey());
}
私有数字首选项makeDigital(首选项pref){
返回(DigitalPreference)FindReference(pref.getKey());
}
私有void setClickListener(首选项首选项,最终布尔值isSeekBar){
preference.setOnPreferenceClickListener(新的OnPreferenceClickListener(){
公共布尔onPreferenceClick(首选项优先){
如果(isSeekBar){
makeSeekBarDialogPreference(pref).show();
}否则{
makeDigitalPreference(pref.show();
}
返回true;
}
});
}
public void getPrefs(){
SeekbardiologPreference Ringvolume_preference=(SeekbardiologPreference)findPreference(“Ringvolume_preference”);
setClickListener(Ringvolume_首选项,true);
//实例化每个首选项并将ClickListener附加到每个首选项
}
我在res/xml/prefs.xml中声明了所有首选项。现在,每当我运行应用程序时,都会立即强制关闭。我怀疑我的清单有问题:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.gobernador"
      android:versionCode="1"
      android:versionName="0.1">
    <uses-sdk android:minSdkVersion="5"
              android:targetSdkVersion="10"/>

    <application android:label="@string/app_name"
             android:name="APP">
        <activity android:name=".TopPage"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

,以及其他问题,但我还没能解决这个问题

如果有人能指引我正确的方向,你会让我走出一个巨大的常规。谢谢

编辑:在浏览logcat之后,我发现prefs.xml文件中抛出了一个异常

<?xml version="1.0" encoding="UTF-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                  android:title="Settings">

    <PreferenceScreen android:title="Volumes"
                      android:summary="Ring, Notification, System, etc.">

        <com.gobernador.SeekBarDialogPreference android:key="Ringvolume_preference"
                                        android:title="Ring Volume"
                                        android:summary=""
                                        android:dialogLayout="@layout/seekbar_layout"/>

        <com.gobernador.SeekBarDialogPreference android:key="Notifyvolume_preference"
                                        android:title="Notification Volume"
                                        android:summary=""
                                        android:dialogLayout="@layout/seekbar_layout"/>
... and so on

等等
它在哪里尝试访问
seekbartialogpreference
。为什么不工作


编辑:引发的异常是一个
NoSuchMethodException:seekBadialogPreference(上下文,属性集)
。我定义了那个方法,我遗漏了什么?

我找到了我的解决方案。这是一个java错误。我未能将我的
SeekBarDialogPreference
DigitalPreference
的构造函数列为public,因此系统无法调用它们。

在这里发布异常堆栈跟踪。您需要发布更多堆栈跟踪行。真正的错误是r原因在
com.gobernador.SeekBarDialogPreference
类构造函数(或其方法)中。构造函数中有错误。
java.lang.NoSuchMethodException:SeekBarDialogPreference(Context,AttributeSet)
但我定义了该构造函数。我遗漏了什么吗?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.gobernador"
      android:versionCode="1"
      android:versionName="0.1">
    <uses-sdk android:minSdkVersion="5"
              android:targetSdkVersion="10"/>

    <application android:label="@string/app_name"
             android:name="APP">
        <activity android:name=".TopPage"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
<?xml version="1.0" encoding="UTF-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                  android:title="Settings">

    <PreferenceScreen android:title="Volumes"
                      android:summary="Ring, Notification, System, etc.">

        <com.gobernador.SeekBarDialogPreference android:key="Ringvolume_preference"
                                        android:title="Ring Volume"
                                        android:summary=""
                                        android:dialogLayout="@layout/seekbar_layout"/>

        <com.gobernador.SeekBarDialogPreference android:key="Notifyvolume_preference"
                                        android:title="Notification Volume"
                                        android:summary=""
                                        android:dialogLayout="@layout/seekbar_layout"/>
... and so on