android locale更改方向更改

前端之家收集整理的这篇文章主要介绍了android locale更改方向更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在我的应用程序中,我有两个活动,一个可以旋转到两侧,另一个被锁定在横向模式.

以下是我的清单文件详细信息,其中添加了活动

在我的登录活动中使用微调器我正在更改区域设置并更新整个编辑文本和按钮文本.
在按钮单击操作中,我正在更新UI视图,当我旋转设备时,英语区域设置在更新的视图上设置
这是我的整个代码

public class LoginActivity extends Activity 
{
    Locale locale = null;
    Spinner langSpinner;
    private SharedPreferences langPrefs;
    String langSelected = "";
    int langPosition = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loginscreen);

        langPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        langSelected = langPrefs.getString(langPrefKey,"");
        langPosition = langPrefs.getInt(langPosKey,0);

        langSpinner = (Spinner)this.findViewById(R.id.lanuage_spinner1);
        langSpinner.setSelection(langPosition);
        langSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
        {
            @Override
            public void onItemSelected(AdapterView
最佳答案
如果我理解正确,问题是当你切换屏幕方向时手机的语言环境会恢复,尽管你的AndroidManifest.xml中有android:configChanges =“orientation | screenSize | keyboardHidden”.如果我在你身边,我会从不同的角度来处理这个问题.我会摆脱android:configChanges,当方向改变时,让android重新启动Activity.然后我将使用onSaveInstanceState对来保存用户在Spinner中选择的Locale.再次调用onCreate时,由于方向更改而因为包不为空而调用,因此请读取存储的Locale并重新启动,然后再次更新配置.例如.

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putSerializable("LOCALE",locale);
    super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onCreate(Bundle savedInstanceState)  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.loginscreen);
    if (savedInstanceState != null) {
        locale = (Locale) savedInstanceState.getSerializable("LOCALE");
        if (locale != null) {
           // update the configuration 
        }
    }

猜你在找的Android相关文章