我有一个活动说ActivityMain
从这个活动我转移到另一个名为ActivitySettings
在设置活动中,我通过单击按钮更改应用程序区域设置,并使用重新创建实现了当前活动中所需的更改,但是当我按回时,我的“ActivityMain”将恢复,但区域设置未更新。
有人可以告诉我如何“重新创建”backstack 活动吗?正确的方法是什么?
我无法在刷新时调用重新创建,因为它将是无限循环
在每个活动的onCreate()
你可以维持currentLangCode
。检查该值onResume()
,如果不同,您可以断定区域设置已更改并且recreate()
您可以按如下方式进行操作:
public class ActivityA extends AppCompatActivity{
private String currentLangCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
currentLangCode = getResources().getConfiguration().locale.getLanguage();
...
}
@Override
public void onResume(){
...
if(!currentLangCode.equals(getResources().getConfiguration().locale.getLanguage())){
currentLangCode = getResources().getConfiguration().locale.getLanguage();
recreate();
}
}
...
}
我的推荐
如果你想将它应用于所有的Activity,那么只需创建BaseActivity,如下所示:
public class BaseActivity extends AppCompatActivity{
private String currentLangCode;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
currentLangCode = getResources().getConfiguration().locale.getLanguage();
...
}
@Override
public void onResume(){
...
if(!currentLangCode.equals(getResources().getConfiguration().locale.getLanguage();)){
currentLangCode = getResources().getConfiguration().locale.getLanguage();
recreate();
}
}
...
}
将所有活动从BaseActivity
public class ActivityA extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
public void onResume(){
super.onResume();
}
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)