私はこのコミュニティに新しいメンバーです。最初に私は誰にも言っています "こんにちは" ..... これは私の最初の質問です。これはアンドロイドアプリの開発に基づいています。 これは私の質問です。 私はまだ3つの複数の言語のために開発する必要があるアプリケーションでアンドロイドapplication.soを開発しています。アンドロイドアプリの言語をprogrammaticalllyに変更するには
1.English - "エン" 2.Chinese(簡体字) - "zh_" 3.Chinese(繁体字) - "のzh_TW"
だから私は、これらの言語の文字列リソースを追加し、私はコードを実装残念ながらそれはいくつかの時間は働いていませんが、それはしばらくの間働いています。私は自分のコードの間違いを特定することはできません。それは何の誤りもないようです。
これらは私のテストの文字列名(すべてlanuages)
- で "エン" -sign "ZH _" である - 登录
- "のzh_TW" - 登錄
と、この私のコード部分です
public class MainActivity extends AppCompatActivity {
private Spinner spinnerctrl;
private Locale myLocale;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinnerctrl=(Spinner)findViewById(R.id.spinner1);
spinnerctrl.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if (pos == 1) {
Toast.makeText(parent.getContext(),
"You have selected Chinese(Simplified)", Toast.LENGTH_SHORT)
.show();
saveLocale("zh");
} else if (pos == 2) {
Toast.makeText(parent.getContext(),
"You have selected Chinese(Traditional)", Toast.LENGTH_SHORT)
.show();
saveLocale("zh_TW");
}
else if (pos == 3)
{
Toast.makeText(parent.getContext(),
"You have select English",Toast.LENGTH_SHORT)
.show();
saveLocale("en");
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
loadLocale();
@Override
public void onBackPressed()
{
Intent MyProfile = new Intent(getApplicationContext(), MainActivity.class);
startActivity(MyProfile);
finish();
}
public void loadLocale() {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
String language = prefs.getString(langPref, "");
changeLang(language);
}
public void changeLang(String lang) {
if (lang.equals(""))
return;
myLocale = new Locale(lang);
saveLocale(lang);
Locale.setDefault(myLocale);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
public void saveLocale(String lang) {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(langPref, lang);
editor.commit();
}}
これは私のprobですlem.thisコード部分はランタイムエラーなしで実行されます。しかし、いくつかの時間は働いていません.iはなぜそうなのかわかりません。だから私がこの問題をスローするのを助けることができれば、 ありがとうございます。
なぜコンテキストを有効にするのですか? – androidpc
context.getResources(); //アプリケーションコンテキストからリソースを取得する必要があります。 –