0

アプリケーションを起動すると最初に表示されるダイアログボックスを作成し(onCreateメソッドでコーディングされています)、次に質問と回答がテキストビューに表示されます

向きの問題を解決するために(向きの変更時にダイアログボックスが再び表示されないため)、マニフェストを次のように使用しました:

android:configChanges="keyboardHidden|orientation"

私はres/layout-landres/layout-port

ただし、背景の色のみを変更するには

私はアクティビティで使用onConfigurationChangedしました(ローテーションで呼び出されます)。

そのため、向きを変更してもダイアログボックスは再び表示されず、背景が再描画されますが、初期化された質問と回答onCreate()は表示されません

だから維持する方法

4

4 に答える 4

1

Usingandroid:configChanges="keyboardHidden|orientation"とは、アクティビティが構成の変更自体を処理し、システムがレイア​​ウトを変更しないことを意味します。 http://developer.android.com/guide/topics/resources/runtime-changes.html

を使用していない場合にandroid:configChanges="keyboardHidden|orientation"テキストビューをリセットするには:

@Override
public Object onRetainNonConfigurationInstance() {
    final MyDataObject data = collectMyLoadedData();
     //here get the text from the text view, and any other info
    return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
    if (data != null) {
       //get the text and set it in the text view
    }

}
于 2012-07-23T06:49:43.840 に答える
0

onSaveInstanceStateデータの保存とデータの取得に使用しましonRestoreInstanceStateたか? これを実行すると、同じダイアログ ボックスを で表示できますonRestoreInstanceState

さて、あなたに質問があります。向きを変更したときに背景色を変更しなかったのはなぜですか? 色が不明またはランダムな色の場合はどうすればよいですか?

于 2016-03-25T13:05:39.057 に答える
0

デバイスの向きを変えると、androidはonCreateを再度呼び出さずに実行を継続しますが、onResumeにコードを入れると、このコードが再度実行されます。

于 2012-07-23T06:48:14.250 に答える
0

OnCreate で、メイン レイアウトに次のように追加します。

 LinearLayout lv=(LinearLayout)findViewById(R.id.mainlayout);
  lv.setBackgroundColor(android.R.color.black);  // for default potrait or landscape view and after that add this in that activity

@Override
public void onConfigurationChanged(Configuration newConfig) {
  Configuration c = getResources().getConfiguration();

  if(c.orientation == Configuration.ORIENTATION_PORTRAIT ) {
    // portrait
     lv.setBackgroundColor(android.R.color.black);
  } else if(c.orientation == Configuration.ORIENTATION_LANDSCAPE ){
    // landscape
    lv.setBackgroundColor(android.R.color.white);
  }
}

また、定義されたアクティビティのメニフェストにこれを追加します

 android:configChanges="keyboardHidden|orientation"
于 2012-07-23T09:28:46.847 に答える