Tôi muốn ngôn ngữ của mình thay đổi động và tôi đang cố gắng sử dụng onConfigurationChanged nhưng nó không được gọi. Tôi có một MainActivity tạo thanh tác vụ và viewpager của tôi. Phần còn lại của các trang của tôi là Fragments. Trong SettingsFragment của tôi, tôi có một nút để chuyển ngôn ngữ sang tiếng Pháp.Ngôn ngữ: onConfigurationChanged không được gọi là
langChange.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View vi) {
MainActivity main = (MainActivity)getActivity();
main.langChange();
}
});
Sau đó, trong MainActivity của tôi, tôi có
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if (locale != null){
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
public void langChange(){
if(currentLanguage == FRENCH_LANGUAGE){
locale = new Locale("en");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "English";
}
else if(currentLanguage == ENGLISH_LANGUAGE){
locale = new Locale("fr");
Locale.setDefault(locale);
Configuration c = getBaseContext().getResources().getConfiguration();
c.locale = locale;
getBaseContext().getResources().updateConfiguration(c,getBaseContext().getResources().getDisplayMetrics());
currentLanguage = "French";
}
actionBar.setSelectedNavigationItem(actionBar.getTabCount() - 1); //This just puts it back to the settings tab
}
Các onConfigurationChanged
không được gọi. Trong biểu hiện của tôi, tôi có:
<activity android:name="MainActivity" android:screenOrientation="portrait" android:configChanges="locale"></activity>
Tôi đã thử thêm một hoặc tất cả các tùy chọn này orientation|keyboardHidden|screenSize
không thành công.
Lý do cho tất cả điều này là vì tôi muốn thay đổi văn bản ActionBar và tất cả văn bản khác khi tôi nhấp vào nút. Tôi có một tập tin dây riêng cho tiếng Pháp.
Mọi trợ giúp đều tuyệt vời.
Làm thế nào để bạn biết rằng 'onConfigurationChanged' không được gọi? Bạn có một kiểm tra cho 'null' xung quanh mã bên trong phương thức, đó có thể là vấn đề. Ngoài ra hãy xem câu hỏi này: http://stackoverflow.com/questions/6457659/android-onconfigurationchanged-not-being-called – Darwind
Tôi đã thêm các điểm ngắt trước và sau câu lệnh if với 'Log.d'. Tôi biết nó không trúng phương pháp này. Tôi cũng đã xem xét các câu hỏi trên và những câu trả lời không giải quyết vấn đề của tôi – BigT