安卓应用更改字体后在三星设备上崩溃

5

我在尝试更改设备字体(三星Galaxy Tab3)时遇到了一个应用程序问题,即我的应用程序崩溃。在这种情况下,当我进行字体更改时,应用程序正在后台运行。

步骤:

  • 启动应用程序
  • 使用状态栏打开设备设置
  • 更改设备的字体样式
  • 使用最近的应用程序返回到应用程序
  • 崩溃

我尝试在其他设备上测试此场景,但无法复制它。我的应用程序仅在三星设备上崩溃,并且仅当系统字体样式更改时。

附上崩溃日志:

07-22 12:26:09.359: E/AndroidRuntime(8110): FATAL EXCEPTION: main
07-22 12:26:09.359: E/AndroidRuntime(8110): java.lang.NullPointerException
07-22 12:26:09.359: E/AndroidRuntime(8110):     at com.acs.nomad.app.widget.h.a(Unknown Source)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at com.acs.nomad.app.b.ap.m(Unknown Source)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at com.acs.nomad.app.d.v.onPause(Unknown Source)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1129)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.BackStackRecord.popFromBackStack(BackStackRecord.java:662)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1450)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl$2.run(FragmentManager.java:444)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1401)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.os.Handler.handleCallback(Handler.java:615)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.os.Looper.loop(Looper.java:137)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at android.app.ActivityThread.main(ActivityThread.java:4949)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at java.lang.reflect.Method.invokeNative(Native Method)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at java.lang.reflect.Method.invoke(Method.java:511)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
07-22 12:26:09.359: E/AndroidRuntime(8110):     at dalvik.system.NativeStart.main(Native Method)

1
首先,您需要解码堆栈跟踪。请参见解码混淆的堆栈跟踪。此外,我无法看到您的行号。在下一个版本中,请在您的proGuard中添加以下行:-renamesourcefileattribute SourceFile-keepattributes SourceFile,LineNumberTable。现在,它将在崩溃日志中显示行号(而不是未知来源)。 - Sufian
我遇到了同样的问题,你找到任何解决方法了吗? - GvSharma
1个回答

1

原生Android没有更改设备字体样式的功能。

这可能是三星TouchWiz的特性。也许,您应该查看三星特定的SDK。

但如果我是您,我会通过广播接收器监听字体样式的更改。通过使用来自Google Play的广播监视器应用程序找出要监听的广播。

然后,每当发生nullpointer异常时,我会忽略它并重新启动Activity。我意识到这是一个激烈的行动,但在找出字体样式如何导致nullpointer异常之前,这可能是唯一的解决方法。


原生安卓系统没有更改设备字体样式的选项,但在三星Tab3中可以通过“显示”-->“字体”-->“字体样式”进行更改。 - TexGeek
你是在纠正我使用的菜单名称吗?还是说三星Tab3确实运行着没有TouchWiz的原生Android操作系统? - Stephan Branczyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接