2011-01-06 16 views
5

私のタブ付アプリケーションは、向きを変更して表示を再表示しません。Androidオリエンテーション変更

Iは、メインタブ活性およびマニフェスト内の各アクティビティに

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

を、タブ、リスト、ボタンとのTextViewが正しく表示されます。 エミュレータの向きを変更すると、他のウィジェットのタブが表示されず、画面が黒くなります。

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

+0

私は非常に似た問題を経験しましたが、別の回避策が見つかりました。それは、2つの異なるインスタンスで現れています。私の質問[ここ](http://stackoverflow.com/questions/8103639/android-orientation-change-causes-imageview-to-dissapear)を参照してください。 –

答えて

0

風景/ポートレートモードでレイアウトが機能しないことがありますか?回転した後にアプリを起動してみて、同じ結果が得られるかどうかを確認してください。もしそうなら:あなたのレイアウトを修正してください:D

+0

アプリは両方向で動作します。方向がどちらの方向に変化しても再表示されません。 – Tori

+0

タブ...独自のアクティビティであるタブでタブアクティビティを使用していますか?あなたのtabactivityにもコードを追加しましたか?どのようなonconfigchanged関数が呼び出されているかを確認するために、いくつかのログを追加します。 – Nanne

+0

はい、私はtabactivityにonconfigchangedを追加し、ログでは、表示されているタブのアクティビティとアクティビティの両方でonconfigchangedが呼び出されていることがわかります。問題はビューが表示されないことです。 – Tori

5

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

トリックはマニフェストであなたのTabActivityのエントリに

android:configChanges="orientation|keyboardHidden" 

を追加することです。すべての子供の活動だけを残す。 の実装を気にしないでください。TabActivityには含まれません。

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

私はほとんどの制御で画面の変更を持っているための最良の方法はそうのように別々のXMLでランドスケープモードのためのあなたのレイアウトXMLを作ることであることが判明し成功を収めて
+1

ありがとう。これはとても良かったです。私のために働いた –

+0

私たちが行のコードの上にmaifestで書くならば、それはlayout-landフォルダからxmlを取らないでしょう。 – RobinHood

1

res/layout-land/youractivity.xml 

使用/レイアウト/と/レイアウト - 土地/あなたのレイアウトだけでなく、グラハムボーランドの答えは金色です。

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

上記のスニペットは私の仕事をしたものです。 :)

は、おお、私は...「未指定」は、それが最善であると考えて何をするためにシステムを可能にするものである

幸運を信じています!マニフェストを変更していたにも関わらずOnConfigurationChanged()のトリガに

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

リード:私は名前空間の内部ではなくActivity class外に行くと、その行を見つけ13、ターゲット・APIとAndroidためMono

+0

他に追加するものはありますか?私はres/layout-land/main.xmlを追加しましたが、ランドスケープモードではビューを更新しませんでした。表示されているビューは、まだポートレートのレイアウトです。 – exception01

+0

を追加してみてください: android:screenOrientation = "未指定" 追加のプロパティをショットにしてお知らせください。 –

1

大きいですない。

関連する問題