2015-12-11 19 views
5

Trong ứng dụng Android của tôi, tôi muốn thay đổi phân đoạn mẫu ngôn ngữ. Ứng dụng của tôi chứa MainActivity.java. Hoạt động này chứa ngăn điều hướng và phân đoạn. Khi tôi thay đổi ngôn ngữ của tôi từ mảnh, ngôn ngữ được thay đổi mỗi nơi nhưng không có trong menu drawer.I đang sử dụng mãThay đổi ngôn ngữ mục navigationdrawer

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

Khi tôi chọn tiếng Anh tôi nhận được sau kết quả in English

sau khi thay đổi ngôn ngữ tôi nhận được cái này

enter image description here đây là chuỗi tập tin từ thư mục giá trị-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> 

và đây từ thư mục giá trị

<!-- 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> 

và navigationdrawerfragnet của tôi là

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

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

Bạn nên thay đổi trong hoạt động của mình trong đó có ngăn kéo menu bạn. – Piyush

+0

ok tôi thay đổi nó trên hoạt động chính nhưng không nhận được kết quả mong muốn –

+0

tôi nghĩ rằng các chuỗi item của bạn menudrawer cũng phải ở strings.xml, họ có trong đó không? – Bhushan

Trả lời

0

séc 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); 

bạn cần phải đẩy t ở đây, trên phương thức setLocal của bạn để vô hiệu hóa danh sách ngăn cách

+0

rõ ràng hơn xin vui lòng ....... –

+0

bạn cần phải vô hiệu hóa ngăn kéo của bạnAdapter để cập nhật mảng chuỗi. chỉ cần sao chép các dòng ở trên vào phương thức setLocal của bạn –

+0

trong ngăn ngăn điều hướng –

4

Bạn nên đặt ngôn ngữ trong hoạt động ngăn kéo của mình trước setContentView(int resId).

Cũng trong onResume() phương pháp bạn có thể recrate hoạt động của bạn với API_LEVEL >= 11 gọi super.recreate() và dưới 11 bạn có thể đặt onCreate(null).

+0

trong hoạt động chính hoặc trong ngăn ngăn điều hướng tôi đang sử dụng cấp api 11 –

+0

Hoạt động chính ... – Piyush

+0

@RahulPatel Bạn đã kiểm tra chưa? – Piyush

Các vấn đề liên quan