gpt4 book ai didi

android - 更改抽屉导航项目语言

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:53:17 25 4
gpt4 key购买 nike

在我的 android 应用程序中,我想更改语言形式的 fragment 。我的应用程序包含 MainActivity.java。此 Activity 包含抽屉导航和 fragment 。当我从 fragment 更改我的语言环境时,语言在每个地方都会更改,但不会在抽屉导航中更改。我正在使用代码

private String setLocal() {
Locale locale;
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
prefs = getActivity().getSharedPreferences("Language", 0);
String restoredText = prefs.getString("language", "");
if (restoredText.equalsIgnoreCase("fr_FR"))
locale = new Locale("fr");

else
locale = new Locale("en");
Locale.setDefault(locale);
conf = new Configuration();
res.updateConfiguration(conf, dm);

return restoredText;
}

当我选择英语时,我得到以下结果 in English

改变语言后我得到这个

enter image description here这是来自 values-fr 目录的字符串文件

 <string-array name="nav_drawer_titles">
<item>Accueil</item>
<item>Profil</item>
<item>courses</item>
<item>Tarification</item>
<item>Configuration</item>
<item>Envoyez à un ami</item>
<item>Facture</item>
<item>Position du Chaufeur</item>
<item>Aide</item>
<item>Déconnexion</item>
</string-array>

这里来自 values 文件夹

 <!-- Nav Drawer Menu Items -->
<string-array name="nav_drawer_titles">
<item>Home</item>
<item>Profile</item>
<item>Ride Log</item>
<item>Invoice</item>
<item>Track Chauffeur</item>
<item>Language</item>
<item>Refer To Friend</item>
<item>Help</item>
<item>Sign Out</item>
</string-array>

我的navigationdrawerfragnet是

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
title = getResources().getStringArray(R.array.nav_drawer_titles);

images = getResources().getStringArray(R.array.nav_drawer_icons);


mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);


mDrawerListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
selectItem(position);
}
});
selectedposition = new int[] { mCurrentSelectedPosition };
drawerAdapter = new CustomDrawerAdapter(getActivity(), title, images,
selectedposition);

mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
mDrawerListView.setAdapter(drawerAdapter);
return mDrawerListView;
}

我是MainActivity.java

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onPrepareOptionsMenu(menu);
invalidateOptionsMenu();
setLocal();
return super.onPrepareOptionsMenu(menu);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
setLocal();
invalidateOptionsMenu();
}

最佳答案

您应该在 setContentView(int resId) 之前在您的抽屉 Activity 中设置您的语言环境。

同样在 onResume() 方法中,您可以使用 API_LEVEL >= 11 重新创建您的 Activity 调用 super.recreate() 和低于 11 你可以设置 onCreate(null)

关于android - 更改抽屉导航项目语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34217318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com