layout-land文件不起作用

时间:2012-12-12 15:23:43

标签: android android-layout

我遇到了以下问题。我的程序是秒表。我有res/layout/main.xmlres/layout-land/main.xml        但它的工作是错误的。当我打开手机时,程序停止。我认为它再次呼吁创建。我在Manifest中添加了以下行

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

1 个答案:

答案 0 :(得分:1)

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

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

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

推荐链接如下: - Link for handling Configuration。我希望这适合你。