比方說,這是調用堆棧:在片段中更改整個應用程序的語言?
Fragment2(當前位置)
片段1
HostingActivity
用戶剛剛導航到fragment2(這是設置屏幕)。他選擇第二種語言,然後導航回Fragment1。我希望應用在他進入fragment1後立即顯示第二種語言的內容。
我讀過最好的辦法是讓所有的片段都來自配置OnResume()
方法中的區域設置的基片段。
public class BaseFragment : Fragment
{
public override void OnResume()
{
string langCode = prefs.GetString("settings_language", "en_US");
Resources res = Application.Context.Resources;
// Change locale settings in the app.
DisplayMetrics dm = res.DisplayMetrics;
Configuration conf = res.Configuration;
conf.SetLocale(new Locale(langCode.ToLower()));
res.UpdateConfiguration(conf, dm);
OnConfigurationChanged(conf);
base.OnResume();
}
}
我試過這個,但沒有任何運氣。我沒有看到任何變化。 我很樂意聽取任何建議。
PS。爲了確保我沒有在Android文件夾中搞亂Android所需的任何命名約定,我嘗試使用我想要的語言重新啓動模擬器(使用adb shell),並按預期工作。
@ YorkShen-MSFT我我不完全確定如何使用'tags'會有什麼不同。你能解釋一下嗎? – rasperryPi
參考:https://stackoverflow.com/questions/38022709/android-refresh-current-fragment-after-language-change –