【问题标题】:getActionBar() = null for custom languagegetActionBar() = null 用于自定义语言
【发布时间】:2013-03-18 00:48:06
【问题描述】:

我遇到了一个奇怪的问题。 我正在开发一个应用程序 targetAPI = 11。我正在使用 theActionbar.TabListener 来实现两个选项卡,一切都很好。但是,我现在为德语字符串创建了一个新的“values-de”文件夹以用于德语设备。现在,当我将我的设备设置为德语并想启动应用程序时,它会立即崩溃,因为其中包含一个空指针:

  final ActionBar actionBar = getActionBar();
  actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

为什么它只发生在设备设置为德语的情况下(我假设它与我的 values-de 有关,我只是复制了整个“values”文件夹,将副本重命名为“values-de”)

如果没有大量的设计变通办法,我该如何解决这个问题?它非常适合英语,但我想添加多语言支持。

谢谢。

编辑 1 - Stacktrace:(抱歉忘记了)

03-18 01:56:02.575: E/AndroidRuntime(23037): FATAL EXCEPTION: main
03-18 01:56:02.575: E/AndroidRuntime(23037): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.motioncoding.mobilesms/com.motioncoding.mobilesms.core.LaunchActivity}: java.lang.NullPointerException
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.os.Looper.loop(Looper.java:137)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread.main(ActivityThread.java:5041)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at java.lang.reflect.Method.invokeNative(Native Method)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at java.lang.reflect.Method.invoke(Method.java:511)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at dalvik.system.NativeStart.main(Native Method)
03-18 01:56:02.575: E/AndroidRuntime(23037): Caused by: java.lang.NullPointerException
03-18 01:56:02.575: E/AndroidRuntime(23037):    at com.motioncoding.mobilesms.core.LaunchActivity.onCreate(LaunchActivity.java:43)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.Activity.performCreate(Activity.java:5104)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-18 01:56:02.575: E/AndroidRuntime(23037):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-18 01:56:02.575: E/AndroidRuntime(23037):    ... 11 more

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • 刚刚发布,抱歉忘记了:P
  • 在第 43 行检查您的 LaunchActivity 的 onCreate() 编辑:没关系,我看到那是您的 ActionBar
  • 这看起来很奇怪。请检查您的values-de 文件夹中是否有任何未转义的字符,或者是否有重复的styles.xml 文件?
  • omg...它也复制了styles.xml,obv。那解决了它。我真的不明白为什么,但它现在有效。接受我的投票

标签: android tabs android-3.0-honeycomb


【解决方案1】:

styles.xmlvalues 复制到values-<lang> 的问题在于它是不允许的,并且会混淆Android,因为它是重复的。但是values-<lang> 中允许的资源是strings.xmlarrays.xml,因为这些资源是唯一需要翻译的资源。

但是,当 values-<lang> 文件夹中的 styles.xmldimens.xmlcolors.xml 是针对 API 的特定版本时,它们是可能的。所以他们必须在即values-de-v11

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多