我正在根据用户输入更改应用程序的语言。之后,我必须重新创建活动以使更改可见。到目前为止,我已经尝试了两种方法:
第一种方法:
Intent refresh = getIntent();
finish();
startActivity(refresh);
但是事实是,尽管该活动加载了新的语言字符串,但操作栏标题仍使用以前的语言。如果我关闭应用程序并再次加载屏幕,一切都很好。所以我想我可能做错了,将代码更改为:
第二种方法:
Intent refresh = new Intent(this, FirstActivity.Class);
refresh.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(refresh);
finish();
请参见Reference。
这将导致应用程序崩溃。任何见解都会很有帮助。
注意:我正在使用app.support.v7.app.ActionBarActivity
问题屏幕截图:
编辑:
我也尝试过:
Intent refresh =getIntent();
finish();
this.supportInvalidateOptionsMenu();
startActivity(refresh);
问题仍然存在。
编辑2:二手:
Intent refresh =getIntent();
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
supportInvalidateOptionsMenu();
else
invalidateOptionsMenu();
//this.supportInvalidateOptionsMenu();
//finish();
startActivity(refresh);
finish();
问题仍然存在。
您可以通过调用invalidateOptionsMenu();
要求android重新创建操作栏,然后自动执行操作>
示例:
**// whatever you want to do before you want to recreate action bar activity.invalidateOptionsMenu();
** 编辑
在API上<11使用supportInvalidateOptionsMenu()
方法
完整的解决方案是这样的:
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
supportInvalidateOptionsMenu();
else
invalidateOptionsMenu();
重新创建Activity后,尝试按onCreate
方法设置操作栏标题,如下所示: