2011-06-03 89 views
2

有沒有人試過嗎?在應用程序處於後臺時更改語言

我有一個應用程序,我已配置根據設備的區域設置使用兩種不同語言運行。

重現步驟。

(考慮到我用法語和英語)

  1. 設置英語語言環境。
  2. 加載應用程序。
  3. 將應用程序發送到後臺。
  4. 將設備區域設置更改爲法語。
  5. 返回到您的應用並將其激活。
  6. (全部看起來好吧..現在一切都用法語加載(因爲它應該))
  7. 轉到另一個屏幕。
  8. 收到NullPointerException !!!

HUH ?!

對此有何看法?

後來編輯(請求)

這裏的亞行堆棧跟蹤:

06-04 00:35:27.093: WARN/dalvikvm(18434): threadid=3: thread exiting with uncaught exception (group=0x4001dc20) 
06-04 00:35:27.093: ERROR/AndroidRuntime(18434): Uncaught handler: thread main exiting due to uncaught exception 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activity.MenuTabActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activitygroup.MyProfileActivityGroup}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activity.myprofile.DriverProfileActivity}: java.lang.NullPointerException 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.os.Looper.loop(Looper.java:123) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at dalvik.system.NativeStart.main(Native Method) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activitygroup.MyProfileActivityGroup}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activity.myprofile.DriverProfileActivity}: java.lang.NullPointerException 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:2335) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.widget.TabHost.setCurrentTab(TabHost.java:320) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.widget.TabHost.addTab(TabHost.java:213) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.MyPackageName.__XXXXX__.activity.MenuTabActivity.onCreate(MenuTabActivity.java:80) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  ... 11 more 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.MyPackageName.__XXXXX__/com.MyPackageName.__XXXXX__.activity.myprofile.DriverProfileActivity}: java.lang.NullPointerException 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:2335) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.MyPackageName.__XXXXX__.activitygroup.MyProfileActivityGroup.startChildActivity(MyProfileActivityGroup.java:69) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.MyPackageName.__XXXXX__.activitygroup.MyProfileActivityGroup.onCreate(MyProfileActivityGroup.java:63) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  ... 20 more 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434): Caused by: java.lang.NullPointerException 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at com.MyPackageName.__XXXXX__.activity.myprofile.DriverProfileActivity.onCreate(DriverProfileActivity.java:545) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
06-04 00:35:27.123: ERROR/AndroidRuntime(18434):  ... 27 more 

有人嗎?

+3

什麼是堆棧跟蹤說呢? – Kaj 2011-06-03 21:49:01

+0

它的工作原理就像你所期望的,如果你在法國開始了區域設置? – CaseyB 2011-06-03 21:55:39

+0

是的,從非活動狀態返回時它的工作方式與預期相同 – 2011-06-03 21:57:57

回答

1

發現了什麼是錯誤的。

我的OnDestroy方法中有一個System.Exit(0),它在我進入後臺時處於屏幕中。

看來,如果您將應用程序發送到背景然後回來,OnDestroy將不會被調用。

如果在此期間發生變化的區域設置,然後再回來吧,OnDestray將被稱爲!!!!

這很奇怪,但它更多但在我的情況下,onDestroy被隱式調用(System.exit(0),但屏幕仍然存在..應用程序沒有退出(甚至更多..它您輸入正確加載的法語!),這是令人困惑的。

反正..怪異的東西解決了,謝謝。

+0

由於某種原因,每次從活動 – ACM64 2011-06-10 15:06:09

+0

中調用onDestroy時,onDestroy在更改LOCALE後被調用onl。你確定我們的發言嗎?當按下home鍵時,活動處於「睡眠模式」。我沒有理由打電話給Destroy! – 2011-06-14 09:37:04

+0

那麼,睡眠模式實際上不是「從活動中脫身」,它的生命週期有點改變,因爲當前的活動仍然處於最佳狀態。 – ACM64 2011-06-23 10:29:05

0

沒有真正看到你的代碼,它是不可能確定問題是什麼。上面的評論給你一個開始嘗試調試問題的好地方。有一點需要注意,只要你使用String作爲關鍵字。如果在運行應用程序期間鍵被翻譯,它將無法找到值。

1

它可能是,你在外面活動的生命週期和當你切換沒有被創造了一些對象,所以你應該檢查下一個:

  1. 如果這個工程W/O第4步?
  2. 如果被緩存某些值/沒有翻譯正確(就像你設置一些領域,而不是每次更新)

    mField = getString(R.string.title); 
    
相關問題