2013-04-12 142 views
9

當我點擊「sub_changelang」按鈕時,應該將程序語言更改爲法語。我得到了以下代碼來更改語言環境,但我不知道如何刷新/更新應用程序以將語言更改爲法語。單擊按鈕切換語言

Button cl = (Button) findViewById(R.id.sub_changelang); 
cl.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     Locale locale = new Locale("fr_FR"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
    } 
}); 

它不起作用。我該如何解決它?我試圖補充:

MainActivity.this.getResources().updateConfiguration(config, MainActivity.this.getResources().getDisplayMetrics()); 

但它沒有工作。我也試過:

getBaseContext().getResources().updateConfiguration(config, 
          getBaseContext().getResources().getDisplayMetrics()); 

它也沒有工作。

android:configChanges="locale" 

設置下的應用AndroidMainfest.xml內 - >活動

+0

您需要更改區域 –

+0

它確實改變了按鈕的文本,但不是全部的應用程序UI後,重新啓動您的活動 – Ron

+0

我使用相同的代碼爲u ...和我的應用程序工作正常 –

回答

15

我使用的支持。此代碼設置區域

String languageToLoad = "fr_FR"; 
    Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics()); 

Intent intent = new Intent(XYZ.this, XYZ.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

此處上下文是應用程序基本上下文。 請同時嘗試「fr」而不是「fr_FR」,因爲我在爲阿拉伯語區域設置工作,並且工作正常。

您需要在更改區域設置後重新啓動活動。

+0

你知道如何在片段導航抽屜?它的工作,但我只有主要活動別人是碎片,所以我怎樣才能改變它的片段,知道如果我會改變它在另一個片段它將意圖主要活動? – Sultan

+0

此線程與片段無關。您可以詢問有關此問題的新問題或搜索同一主題。順便說一句,您可以設置監聽器知道片段更改事件,然後根據您的片段要求更新導航抽屜。請參閱此文檔參考http://developer.android.com/reference/android/app/FragmentManager.OnBackStackChangedListener.html –

6

您可以使用activity.this.recreate(),但它會從API級別11