2012-01-12 18 views
5

私はスピナーがあるという活動があります。肖像画や風景モードのため、私は別のレイアウトを持っているので、私はonConfigurationChanged方法スピナーのアンドロイド画面の向きの処理

@Override 
    public void onConfigurationChanged(Configuration conf) { 
     super.onConfigurationChanged(conf); 
     setContentView(R.layout.layout); 
     initUI(); 
    } 

にレイアウトを変更していますが、問題は、私は向きを変えたときに、私のスピナースピナーはポートレートモードで開いている場合ので、それは中に近づける再作成されています私の要件は:任意のモードで開いている場合は、方向変更後に開いている必要があります。あなたはこの状況を処理する方法を教えてください。

+0

私は試していないが、2つの方法のosavestateがあるとspinner.Onceにそのような何かを復元 – Sameer

+0

それらを試してみてください、私はあなたがHTTP .....ここからあなたの問題の解決策を得るだろうと思う://開発.android.com/resources/articles/faster-screen-orientation-change.html – himanshu

答えて

0

あなたのスピナーの再作成を停止しようとスピナーのperformClick()メソッド

0

はあなたのマニフェストファイルでこれを追加することができます

<activity android:name=".Activity_name" 
      android:configChanges="orientation|keyboardHidden"> 

しかし、ときにこれはあなたのレイアウトが自動的に変更されることはありません追加することにより、あなたが私の答えhereを確認することができます詳細については

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){ 
      setContentView(R.layout.login_landscape); 
     } 
     else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      setContentView(R.layout.login);   
     } 
    } 

、あなたはこのように手動で管理する必要がありますので、お使いのデバイスを回転させます。

+0

私は同じことをしていますが、レイアウトを設定した後にスピナー値を設定する必要があります。それ以外の場合、スピナーは空白になります。 –

+0

状態を維持する上記のコードを試してください。アクティビティは再作成されません。 –

+0

私は上記のコードを試しました。私はスピナーの値が空白に見えます。なぜなら、私はスピンナーをインポートモードにしていて、私は同じIDを持つ別のスピナーをランドスケープモードに持っているからです。 –

0

方向が変わると、destroyメソッドが呼び出され、アクティビティがもう一度再作成されます。破壊メソッドを避けるためには、マニフェストファイルに以下のコードを追加する必要があります。しかし、この場合、レイアウトを1つしか使用できません。内容を再配置する場合は、動的に行う必要があります。

android:configChanges="orientation|keyboardHidden"