Action Bar不会在Activity重新创建Android上重新创建

问题描述 投票:0回答:2

我正在根据用户输入更改应用程序的语言。之后,我必须重新创建活动以使更改可见。到目前为止,我已经尝试了两种方法:

  1. 第一种方法:

              Intent refresh = getIntent();
              finish();
              startActivity(refresh);
    

但是事实是,尽管该活动加载了新的语言字符串,但操作栏标题仍使用以前的语言。如果我关闭应用程序并再次加载屏幕,一切都很好。所以我想我可能做错了,将代码更改为:

  1. 第二种方法:

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

问题仍然存在。

android android-activity android-actionbar locale
2个回答
1
投票

您可以通过调用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();

0
投票

重新创建Activity后,尝试按onCreate方法设置操作栏标题,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.