在运行时更改区域设置时刷新(重新创建)后退堆栈中的活动



我有一个活动说ActivityMain从这个活动中我移动到另一个名为ActivitySettings的活动,在设置活动中,我通过单击按钮更改应用程序区域设置,并使用重新创建我在当前活动中实现了我需要的更改,但是当我按下时,我的"ActivityMain"将恢复,但区域设置没有更新。

有人可以告诉我如何"重新创建"反向堆栈活动吗? 正确的方法是什么。

我不能在刷新时调用重新创建,因为它将是无限循环

在每个活动的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();
}
}
...
}

我的推荐

如果要将其应用于所有活动,则只需按如下方式创建基本活动:

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();
}
...
}

最新更新