1

我有以下问题。我的程序是秒表。我有res/layout/main.xmlres/layout-land/main.xml 但它工作错了。当我转动手机时,程序停止。我认为它再次调用 onCreate 。我在清单中添加了以下行

android:configChanges="keyboardHidden|orientation"

但是在此布局活动未加载之后。

我已经尝试了下一个示例,但它不起作用

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  int ot = getResources().getConfiguration().orientation;
  switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
     setContentView(R.layout.main_land);
     break;
    case Configuration.ORIENTATION_PORTRAIT:
     setContentView(R.layout.main);
     break;
  }
 Toast.makeText(this, "Helloo", Toast.LENGTH_SHORT).show();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // TODO Auto-generated method stub
  super.onConfigurationChanged(newConfig);

  int ot = getResources().getConfiguration().orientation;
  switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
     setContentView(R.layout.main_land);
     break;
    case Configuration.ORIENTATION_PORTRAIT:
     setContentView(R.layout.main);
     break;
  }
}

@Override
public Object onRetainNonConfigurationInstance() {
 // TODO Auto-generated method stub
 return super.onRetainNonConfigurationInstance();
}
4

1 回答 1

1

当您在 AndroidManifest.xml 中包含以下命令时,即android:configChanges="orientation",您将手动禁用默认布局更改行为,即以新方向重新启动您的活动。

非常有用的是,当您在 onConfigurationChanged 中获得CONFIGURATION_LANDSCAPE/CONFIGURATION_PORTRAIT时,您需要手动更改使用的布局。

请注意,根据 Android 开发者网站上的 Activity 文档,onConfigurationChanged 是“最后的手段”选项 - 通常最好保持状态并让系统重新启动您的应用程序。

参考链接如下:-处理配置的链接。我希望这对你有用。

于 2012-12-17T15:22:29.337 回答