2017-11-06 16 views
0

ナビゲーションドロワー項目で奇妙な問題が発生しています 3言語で3つの異なる文字列リソースがあり、ボタンのアクティビティを再作成していますナビゲーション引き出しアイテムが、次のレクリエーション引き出しアイテムに変更され、前に示したはずの値が表示されるので、その一歩遅れます。ここでナビゲーションドロワーのメニュー項目に古いロケールの値が表示される

は私のコードです:私は、ロケール、constant.language、すべての3つの言語の文字列のような他のすべてをチェックして

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    if (Constants.language==2) { 
     LocaleHelper.setLocale(this, "ur"); 
    }else if (Constants.language==1){ 
     LocaleHelper.setLocale(this, "hi"); 
    }else if (Constants.language==0){ 
     LocaleHelper.setLocale(this, "en"); 
    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
if (id == R.id.nav_language) { 
     builder = new AlertDialog.Builder(this); 
     builder.setTitle(getResources().getString(R.string.choose_language)); 
     builder.setPositiveButton("hindi", 
       new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         Constants.language = 1; 
         dialog.cancel(); 
         recreate(); 
        } 
       }); 

     builder.setNeutralButton("english", 
       new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         Constants.language = 0; 
         dialog.cancel(); 
         recreate(); 
        } 
       }); 

     builder.setNegativeButton("urdu", 
       new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         Constants.language = 2; 
         dialog.cancel(); 
         recreate(); 
        } 
       }); 
     builder.create().show(); 
    } 




    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_topstories" 
     android:icon="@drawable/ic_top_stories" 
     android:title="@string/top_stories" /> 
    <item 
     android:id="@+id/nav_india" 
     android:icon="@drawable/ic_india" 
     android:title="@string/india" /> 
    <item 
     android:id="@+id/nav_world" 
     android:icon="@drawable/world_icon" 
     android:title="@string/world" /> 
</group> 
</menu> 

、活動中の他のtextviewsは引き出しの同期が遅れている適切に更新されています

答えて

0

誰もが同じ問題に直面している場合は1で、これは私がしても活動に考える

navigationView.getMenu().clear(); 
navigationView.inflateMenu(R.menu.activity_main_drawer); 

は資源がRELされていない再作成、それを解決するために何をしたかでありますそれをクリアーして、それを再び膨らませることはそれを解決する。

関連する問題