質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

2回答

283閲覧

xamarin.android(C#)でこのJavaコードはどのように書くことができますか?

Anon_

総合スコア334

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2018/05/15 08:30

下記のコードをxamarin.androidで実装しようとしているのですが方法が分かりません。
ボタンクリック時にlocal言語を書き換えて多言語化する際に使用する予定です。

void setLocale(String lang){ Locale locale = new Locale(lang); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getResources().updateConfiguration(config, null); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

UpdateConfiguration を使わない方法を考えてみました。言語の変更を反映する場所を AttachBaseContext にして、設定の受け渡しには SharedPreferences を使うようにしました。

C#

1private void setLocale(string lang) 2{ 3 var sharedPreferences = PreferenceManager.GetDefaultSharedPreferences(this); 4 sharedPreferences.Edit().PutString("lang", lang).Apply(); 5} 6 7protected override void AttachBaseContext(Context @base) 8{ 9 var sharedPreferences = PreferenceManager.GetDefaultSharedPreferences(@base); 10 var lang = sharedPreferences.GetString("lang", "en"); 11 12 base.AttachBaseContext(@base.CreateConfigurationContext(new Configuration() { Locale = new Locale(lang) })); 13}

投稿2018/05/17 08:16

NakamuraYoichi

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Anon_

2018/05/18 04:28

ありがとうございます! 記載いただいたもので試してみたのですが毎回英語が表示されてしまいました。。
NakamuraYoichi

2018/05/18 04:50

1. setLocale() の後の再表示はどのように行っていますか。Recreate() でしょうか。 2. setLocale() で PutString() したものが、その後の AttachBaseContext() の GetString() で取り出せていますか。
Anon_

2018/05/18 05:51

再表示というよりも最初に言語を選択して次のアクティビティから選択した言語で表示されるという流れになります。 setLocale()でlangをセットしたあと、どこかでAttachBaseContext()を呼び出す必要があるのでしょうか。
NakamuraYoichi

2018/05/22 08:39

setLocale() の後に StartActivity(new Intent(this, typeof(Activity1))); というような形で画面遷移した場合も、次のアクティビティの AttachBaseContext() のオーバーライドの中で設定を取り出せると思います。 また、AttachBaseContext() を自力で呼ぶ必要はありません。
NakamuraYoichi

2018/05/22 08:42

amay077 さんありがとうございます:)
Anon_

2018/05/22 23:00

ありがとうございます。 試させていただきます!
guest

0

ほとんどそのまま次のように書けそうです。

c#

1using Java.Util; 2using Android.Content.Res; 3 4private void setLocale(string lang) 5{ 6 Locale = new Locale(lang); 7 Locale.SetDefault(Locale.Category.Display, locale); 8 Configuration config = new Configuration(); 9 config.Locale = locale; 10 Resources.UpdateConfiguration(config, null); 11}

ただ、 UpdateConfiguration は非推奨となっているようです。代わりにどう書いたらよいかは分かりませんでした。

投稿2018/05/16 04:41

NakamuraYoichi

総合スコア374

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Anon_

2018/05/16 05:42

ご回答ありがとうございます。 UpdateConfigurationを使わない方法がわかればよいのですが・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問