2015-12-11 13 views
5

私のアンドロイドアプリでは、言語フォームのフラグメントを変更したいと思います。私のアプリにはMainActivity.javaが含まれています。このアクティビティには、ナビゲーションドロワとフラグメントが含まれます。私はフラグメントから私のロケールを変更すると、言語を変更した後、私はこの1つを取得する場所ではなく、ナビゲーション中に、私は英語を選択すると、私は結果in Englishナビゲーション変更アイテムの言語を変更する

を、次のコードを取得

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

を使用していますdrawer.I、言語は、すべての変更されましたここ

enter image description here

は値-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> 

ここの値フォルダ

<!-- 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 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(); 
} 
+0

メニューの引き出しが含まれているアクティビティを変更する必要があります。 – Piyush

+0

ok私はメインアクティビティでそれを変更しますが、希望の結果が得られません –

+0

menudrawerアイテムの文字列もstrings.xmlにある必要があります。 – Bhushan

答えて

0

チェックthisあなたがプッシュする必要があり

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

トン

@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ですここにあなたのsetLocalメソッドがあります。ドロワーリストを無効にする方法

+0

もっとクリアしてください....... –

+0

drawerAdapterを無効にして文字列配列を更新する必要があります。上記の行をあなたのsetLocalメソッドにコピーしてください –

+0

ナビゲーション・ドロワー・フラグメント –

4

ロケールをsetContentView(int resId)の前に設定する必要があります。あなたはAPI_LEVEL >= 11 コールsuper.recreate()であなたの活動をrecrateことができ、11の下にあなたがonCreate(null)を設定することができますonResume()方法でも

+0

メイン・アクティビティまたはナビゲーション・ドロワ・フラグメント私はAPIレベル11を使用しています –

+0

主なアクティビティ... – Piyush

+0

@RahulPatelチェックしましたか? – Piyush