5

私のタブ付きアプリは、向きが変わってもビューを再表示しません。

追加した

android:configChanges="keyboardHidden|orientation"

メインタブのアクティビティとマニフェストの各アクティビティに。

各アクティビティにこのメソッドを追加しました:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.active_alt);
    mColorLegendBtn = (Button) findViewById(R.id.colorbtn);
    mStatusView = (TextView) findViewById(R.id.celltitle1);
    TextView mStatusView1 = (TextView) findViewById(R.id.celltitle2);
    mStatusView1.setText(mStatusView1.getText()+"testcase1");
    mStatusView.setText(mStatusView.getText()+"testcase");
    initUI();
}

public void initUI() {
    l1 = (ListView) findViewById(R.id.ListView01);
    EfficientAdapter efficientAdapter = new EfficientAdapter(mContext);
    l1.setAdapter(null);
    l1.setAdapter(efficientAdapter);
}

起動時に、タブ、リスト、ボタン、およびテキストビューが正しく表示されます。エミュレータで向きを変えると、タブだけが表示され、他のウィジェットは表示されず、画面が真っ黒です。

私は何が欠けていますか?

4

4 に答える 4

5

私はまさにこの問題を抱えていました。多くの試行錯誤の末、マニフェストに 1 行の変更を加えることで最終的に解決しました。

トリックは追加することです

android:configChanges="orientation|keyboardHidden"

TabActivityマニフェストのあなたのエントリに。すべての子アクティビティをそのままにしておきます。onConfigurationChanged()であっても、 を実装することさえ気にしないでくださいTabActivity

これがどのように、またはなぜ機能するのかはわかりませんが、レイアウトが更新され、タブと子アクティビティのコンテンツの両方が新しい向きで正しく再描画されます。

于 2011-03-17T15:43:49.667 に答える
1

成功して、ほとんどのコントロールで画面を変更する最良の方法は、次のように別のxmlで横向きモードのレイアウトxmlを作成することであることがわかりました。

res/layout-land/youractivity.xml

レイアウトに/layout/と/layout-land/を使用するだけでなく、GrahamBorlandの答えは素晴らしいです。

  <activity android:name=".MainActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="unspecified"
                  android:launchMode="standard"
                  android:configChanges="orientation|keyboardHidden"
                  >

上記のスニペットは私のものを機能させたものです。:)

ああ、私は「不特定」がシステムが最善だと思うことを実行できるようにするものだと信じています...

幸運を!

于 2011-04-25T08:13:50.253 に答える
1

MonoforAndroidのターゲット API が大きい場合13、名前空間の内側にあるが の外側にある行が見つかりましActivity classた 。

[Activity (Label = "Viewer",  ConfigurationChanges = ConfigChanges.Orientation|ConfigChanges.ScreenSize)]

OnConfigurationChanged()マニフェストを変更していなくても、のトリガーにつながります。

于 2012-09-26T00:33:55.810 に答える
0

レイアウトがランドスケープ/ポートレートモードで機能しないというだけでしょうか?ローテーション後にアプリを起動してみて、同じ結果が得られるかどうかを確認してください。もしそうなら:あなたのレイアウトを修正してください:D

于 2011-01-06T15:07:32.667 に答える