Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改navigationdrawer项语言_Android_Navigation Drawer - Fatal编程技术网

Android 更改navigationdrawer项语言

Android 更改navigationdrawer项语言,android,navigation-drawer,Android,Navigation Drawer,在我的android应用程序中,我想更改语言形式片段。我的应用程序包含MainActivity.java。此活动包含导航抽屉和片段。当我从片段更改我的区域设置时,语言在任何地方都会更改,但在导航抽屉中不会。我正在使用代码 private String setLocal() { Locale locale; Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Con

在我的android应用程序中,我想更改语言形式片段。我的应用程序包含MainActivity.java。此活动包含导航抽屉和片段。当我从片段更改我的区域设置时,语言在任何地方都会更改,但在导航抽屉中不会。我正在使用代码

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;
}
当我选择英语时,我得到以下结果

换了语言后,我得到了这个

下面是目录中的字符串文件

 <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>
检查

title=getResources().getStringArray(R.array.nav\u drawer\u titles);
images=getResources().getStringArray(R.array.nav\u抽屉图标);
mDrawerListView
.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
选择项目(位置);
}
});
selectedposition=newint[]{mCurrentSelectedPosition};
PaureRadapter=新的CustomPaureRadapter(getActivity()、标题、图像、,
选择位置);
mDrawerListView.setItemChecked(mCurrentSelectedPosition,true);
mDrawerListView.setAdapter(抽屉指针);

您需要在setLocal方法上按下该行以使抽屉列表无效

您应该在
setContentView(int resId)
之前在抽屉活动中设置区域设置

另外,在
onResume()
方法中,您可以使用
API\u级别>=11

调用
super.recreate()
和下面的
11
您可以设置
onCreate(null)

您应该在包含菜单抽屉的活动中进行更改。好的,我在主活动中更改了它,但没有得到所需的结果。我认为您的菜单绘图项的字符串也应该在strings.xml中,它们在它里面吗?在所有其他方面,它工作正常吗?@piyush在其他片段和活动中是的,在主要活动或导航抽屉片段中,我使用的是api级别11@RahulPatel你检查了吗?是的,请查看我更新的问题,但无法更改。你需要使你的抽屉指针无效以更新字符串数组。只需将上面的这些行复制到导航抽屉片段中的setLocal方法
 <!-- 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>
@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;
}
@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();
}
title = getResources().getStringArray(R.array.nav_drawer_titles);

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

   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);