2017-11-06 24 views
0

탐색 서랍 항목에 이상한 문제가 발생했습니다. 3 개 언어에 대해 3 개의 다른 문자열 리소스가 있고 단추의 활동을 다시 만드는 경우 활동을 제외한 모든 텍스트를 해당 언어로 변경합니다 네비게이션 서랍 항목이지만 다음 레크리에이션 서랍 항목이 변경되어 이전에 표시 한 값이 표시되므로 한 단계 늦 힙니다. 난 단지 서랍 동기화가 지연 제대로 업데이트되고 다른 로케일, constant.language 및 활동의 모든 3 개 언어, 다른 textviews에 대한 문자열 등 모든 것을 확인했다탐색 서랍 메뉴 항목에 이전 로캘 값이 표시됨

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> 

: 여기

내 코드입니다

답변

0

사람이 같은 문제에 직면하는 경우 1 씩이 내가 심지어 활동에 생각

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

는 자원과 rel되지 않습니다 다시 그것을 해결하기 위해 무슨 짓 너무 지겨워서 그것을 다시 부 풀리면 다시 해결됩니다.