0

次のようなフォルダーに文字列を含むローカライズされたファイルがいくつかあります

values
values-ru
values-es
etc.

すべてのフォルダーには、同じキーで異なる値を持つstrings.xmlファイルがあります。

そして、デバッグモードでは完全に機能します。しかし、Play Market からアプリをダウンロードするとResources$NotFoundException、すべてのロケールでクラッシュします。

また、私はそうします

Locale locale = getBaseContext().getResources().getConfiguration().locale; 
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,                                 getBaseContext().getResources().getDisplayMetrics());

初期化中。それが理由でしょうか?

助言がありますか?

dev からログを記録します。コンソール:

android.content.res.Resources$NotFoundException: String resource ID #0x7f080010
at android.content.res.Resources.getText(Resources.java:201)
at android.content.res.Resources.getString(Resources.java:254)
at android.content.Context.getString(Context.java:182)
at com.companyName.appName.menuActivity.onWindowFocusChanged(menuActivity.java:115)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onWindowFocusChanged(PhoneWindow.java:1986)
at android.view.View.dispatchWindowFocusChanged(View.java:3788)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:658)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1921)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

この部分を外しました

Locale locale = getBaseContext().getResources().getConfiguration().locale; 
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,                                 getBaseContext().getResources().getDisplayMetrics());

そしてそれは動作します。私が提案できるように、ロケールを修正する必要はなく、システムは必要なリソースを想定どおりに使用します。

于 2012-09-11T06:47:45.383 に答える