当首选项屏幕启动时,Android 应用程序立即崩溃

2024-05-24

我一直在为应用程序开发首选项屏幕,但我什至没有让它在崩溃之前显示屏幕。我已经检查了几个关于共享首选项的教程,我的代码与他们的类似,但没有任何效果。我认为问题出在我的preferences.xml 文件中,因为我注释掉了除了PreferenceActivity 中XML 文件的打开之外的所有内容。

这是我的preferences.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
  <PreferenceCategory
    android:title="Password">
    <EditTextPreference
        android:name="Your Password"
        android:title="Password"
        android:defaultValue=""
        android:summary="For logging in if facial recognition fails"
        android:key="password" />
    <EditTextPreference
        android:name="Max Attempts"
        android:title="Max Attempts"
        android:defaultValue="3"
        android:summary="Max number of times to try authentication before falling back to password"
        android:key="maxAttempts" />
  </PreferenceCategory>
  <PreferenceCategory
    android:title="Security">
    <CheckBoxPreference
        android:title="Intruder Alert"
        android:defaultValue="false"
        android:summary="Notify me if you detect a face other than mine"
        android:key="intruderAlert" />
        </PreferenceCategory>
    <PreferenceCategory
        android:title="Intruder Notification">
        <EditTextPreference
        android:name="Your Email"
        android:title="email"
        android:defaultValue=""
        android:summary="An email address for us to notify"
        android:key="email" />
        <EditTextPreference
        android:name="Your Phone Number"
        android:title="phoneNumber"
        android:defaultValue=""
        android:summary="A phone number for us to notify"
        android:key="phoneNumber" />            
        </PreferenceCategory>
</PreferenceScreen>

而且,如果我错了,我的问题是我的 java 文件,这里是 PreferenceActivity。目前大部分都被注释掉了,但程序仍然崩溃。

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

    /*private EditTextPreference password;
    private EditTextPreference maxAttempts;
    private CheckBoxPreference intruderAlert;
    private EditTextPreference email;
    private EditTextPreference phoneNumber;

    String PassWord;
    int MaxAttempts;
    boolean IntruderAlert;
    String Email;
    String PhoneNumber;*/

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {   
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);  
        //password = (EditTextPreference) getPreferenceScreen().findPreference("password");
        //maxAttempts = (EditTextPreference) getPreferenceScreen().findPreference("maxAttempts");
        //intruderAlert = (CheckBoxPreference) getPreferenceScreen().findPreference("intruderAlert");
        //email = (EditTextPreference) getPreferenceScreen().findPreference("email");
        //phoneNumber = (EditTextPreference) getPreferenceScreen().findPreference("phoneNumber");
    }

    private void setSummaries()
    {

    }

    @Override
    protected void onResume() 
    {
        /*super.onResume();
        String intruderAlertSetting;
        if (intruderAlert.isChecked())
            intruderAlertSetting = "on";
        else
            intruderAlertSetting = "off";
        password.setSummary("Your password is " +password.getText()+ ".");
        maxAttempts.setSummary("The max attempts that will be made is "+maxAttempts.getText() + ".");
        intruderAlert.setSummary("You have intruder alert set to" + intruderAlertSetting+".");
        if (email.getText().equals(""))
            email.setSummary("You have no email address stored.");
        else
            email.setSummary("Your stored email address is "+email.getText() + ".");
        if (phoneNumber.getText().equals(""))
            phoneNumber.setSummary("You have no phone number stored.");
        else
            phoneNumber.setSummary("Your stored phone number is " + phoneNumber.getText()+".");
        // Set up a listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);*/

    }

    @Override
    protected void onPause() 
    {
        /*super.onPause();

        String intruderAlertSetting;
        if (intruderAlert.isChecked())
            intruderAlertSetting = "on";
        else
            intruderAlertSetting = "off";
        password.setSummary("Your password is " +password.getText()+ ".");
        maxAttempts.setSummary("The max attempts that will be made is "+maxAttempts.getText() + ".");
        intruderAlert.setSummary("You have intruder alert set to" + intruderAlertSetting+".");
        if (email.getText().equals(""))
            email.setSummary("You have no email address stored.");
        else
            email.setSummary("Your stored email address is "+email.getText() + ".");
        if (phoneNumber.getText().equals(""))
            phoneNumber.setSummary("You have no phone number stored.");
        else
            phoneNumber.setSummary("Your stored phone number is " + phoneNumber.getText()+".");

        // Unregister the listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
                .unregisterOnSharedPreferenceChangeListener(this);*/
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) 
    {
        /*String intruderAlertSetting;
        if (intruderAlert.isChecked())
            intruderAlertSetting = "on";
        else
            intruderAlertSetting = "off";
        password.setSummary("Your password is " +password.getText()+ ".");
        maxAttempts.setSummary("The max attempts that will be made is "+maxAttempts.getText() + ".");
        intruderAlert.setSummary("You have intruder alert set to" + intruderAlertSetting+".");
        if (email.getText().equals(""))
            email.setSummary("You have no email address stored.");
        else
            email.setSummary("Your stored email address is "+email.getText() + ".");
        if (phoneNumber.getText().equals(""))
            phoneNumber.setSummary("You have no phone number stored.");
        else
            phoneNumber.setSummary("Your stored phone number is " + phoneNumber.getText()+".");
        PassWord = password.getText();
        MaxAttempts = Integer.parseInt(maxAttempts.getText());
        IntruderAlert = intruderAlert.isChecked();
        Email = email.getText();
        PhoneNumber = phoneNumber.getText();*/

    }   
}

以下是有关崩溃的 LogCat 信息:

04-23 16:37:09.181: WARN/dalvikvm(818): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-23 16:37:09.221: ERROR/AndroidRuntime(818): FATAL EXCEPTION: main
04-23 16:37:09.221: ERROR/AndroidRuntime(818): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cs.fsu.edu.project4/com.cs.fsu.edu.project4.Preferences}: android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.os.Looper.loop(Looper.java:123)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread.main(ActivityThread.java:3647)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at java.lang.reflect.Method.invokeNative(Native Method)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at java.lang.reflect.Method.invoke(Method.java:507)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at dalvik.system.NativeStart.main(Native Method)
04-23 16:37:09.221: ERROR/AndroidRuntime(818): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.Activity.setContentView(Activity.java:1657)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at com.cs.fsu.edu.project4.Preferences.onCreate(Preferences.java:33)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     ... 11 more
04-23 16:37:09.221: ERROR/AndroidRuntime(818): Caused by: java.lang.ClassNotFoundException: android.view.PreferenceScreen in loader dalvik.system.PathClassLoader[/data/app/com.cs.fsu.edu.project4-1.apk]
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.createView(LayoutInflater.java:471)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
04-23 16:37:09.221: ERROR/AndroidRuntime(818):     ... 19 more
04-23 16:37:09.251: WARN/ActivityManager(62):   Force finishing activity com.cs.fsu.edu.project4/.Preferences

也许您更改了首选项架构,请尝试删除存储在 /dbdata/databases/com_your_app/shared_prefs/ 或 /data/data/com_your_app 中的旧首选项文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当首选项屏幕启动时,Android 应用程序立即崩溃 的相关文章

  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • 有关 ListView 自定义行布局项目上的 onClick() 事件的帮助

    我有一个 ListView 其行由我格式化 每行都有 ImageView 和 TextView 的混合 我还实现了自己的适配器 并且能够通过它绘制每一行 现在 我想要这样的东西 用户单击 ImageView 不是行上的其他任何位置 但只有此
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • XSD 嵌套元素

  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • Android应用程序可以像旧的普通java小程序一样嵌入到网页中吗?

    我对 android 平台一无所知 也无法在互联网上找到这个基本问题的答案 更新 好的 我本身无法嵌入 Android 应用程序 但是我可以在 Android Webbrowser 中嵌入 Java 的东西吗 不可以 您无法将 Androi
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐