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 Developers Web サイトの Activity のドキュメントによると、onConfigurationChanged は「最後の手段」のオプションであることに注意してください。通常は、状態を保持して、システムにアプリを再起動させる方がよいでしょう。

参照用のリンクは次のとおりです。-構成を処理するためのリンク。これがうまくいくことを願っています。

于 2012-12-17T15:22:29.337 に答える