0

我刚刚发布了一个警报应用程序,这简直是地狱。当某些设备尝试打开警报列表屏幕时,它会中断。我不知道为什么它会在某些设备上中断,而不是在其他设备上。我见过的每部手机都可以正常运行,但是在其他一些设备上打开警报列表就会炸毁它。对于这种特定的设备兼容性问题,我真的不了解。

AlarmClock 第 227 行的代码是这样的:

 View changeSettings = findViewById(R.id.alarm_settings);
        changeSettings.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
                }
            });

它引用了这行 xml:

<Button
    android:id="@+id/alarm_settings"
    style="?android:attr/buttonBarButtonStyle"
    android:layout_width="0.0dip" android:layout_height="fill_parent"
    android:text="@string/menu_settings"
    android:layout_weight="1.0" />

这链接到我从改编版的 android 股票警报中借用的设置活动的来源,但它使用了据称已弃用的 addPreferencesFromResource。这就是造成这个问题的原因吗?

这是来自用户设备的堆栈跟踪:

Nexus 7 触摸设置警报按钮,然后它崩溃

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nathantempelman.GoodMorningAlarmFree/com.nathantempelman.alarmclockfree.AlarmClock}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
at android.app.ActivityThread.access$600(ActivityThread.java:142)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4931)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.nathantempelman.alarmclockfree.AlarmClock.updateLayout(AlarmClock.java:227)
at com.nathantempelman.alarmclockfree.AlarmClock.onCreate(AlarmClock.java:210)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139)
... 11 more

任何帮助都会非常棒。我知道它也发生在其他人的平板电脑上,不确定是否是平板电脑的问题。如果有人想对其进行测试,该应用程序就在这里:https: //play.google.com/store/apps/details?id=com.nathantempelman.GoodMorningAlarmFree

4

2 回答 2

1

您在第 227 行的 updateLayout 方法中的 AlarmClock 类中有一个 NullPointerException :)

Caused by: java.lang.NullPointerException
 at com.nathantempelman.alarmclockfree.AlarmClock.updateLayout(AlarmClock.java:227)
 at com.nathantempelman.alarmclockfree.AlarmClock.onCreate(AlarmClock.java:210)

我会先检查该代码。

由于您没有发布任何代码,因此我目前无能为力:)

于 2013-03-12T13:09:55.317 回答
1

万一其他人偶然发现了这个问题,最终的问题是有一个单独的平板电脑布局文件,我在我为我的应用程序的一部分借用的源代码库中没有看到它。我显然添加了一堆功能,但没有更新平板电脑的布局。访问我添加的内容的按钮不在平板电脑布局文件中。因此,只有当平板设备加载平板布局文件并在显示中搜索不存在的对象时才会出现空指针异常。当我删除该文件时,一切正常。

我知道,hurp 和或 durp。但也许有人有同样的问题,可能想检查一下。

于 2013-04-18T17:49:15.657 回答