2012-01-12 63 views
5

我有一个微调控件的活动。因为对于纵向和横向模式我有不同的布局,使我改变布局onConfigurationChanged方法微调控制器的android屏幕方向处理

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

但问题是,当我改变方向,我的微调被重建,所以如果微调是在肖像模式下打开它亲近的风景模式。我的要求是:如果它在任何模式下都打开,在改变方向后应该打开。请让我知道如何处理这种情况。

+0

我还没有试过,但有两种方法osavestate和还原在spinner.Once类似的东西试戴 – Sameer 2012-01-12 05:14:36

+0

我想你会得到你的问题的解决从这里..... HTTP://开发商.android.com/resources/articles/faster-screen-orientation-change.html – himanshu 2012-01-12 06:46:52

回答

0

尝试微调的performClick()方法

0

要停止再创造的微调,你可以在你的清单文件

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

但是加入这个布局添加此不会自动当你改变旋转你的设备,所以你必须手动管理,像这样,

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

欲了解更多信息,您可以检查我的回答here

+0

我正在做同样的事情,但仍然需要在设置布局后设置微调器值,否则微调器将变为空白。 – 2012-01-12 05:57:07

+0

试试上面的代码它会保持状态。由于活动不会重新创建。 – 2012-01-12 05:59:13

+0

我试过上面的代码。我看到空白的微调值,因为我有一个微调在portait模式,我有另一个微调与景观模式相同的ID。 – 2012-01-12 06:02:25

0

一旦方向改变,销毁方法被调用,你的活动再次重新创建。为了避免被调用的销毁方法,您需要在清单文件中添加以下代码。但在这种情况下,只能使用一种布局,如果您想要重新放置内容,则需要动态地进行。

android:configChanges="orientation|keyboardHidden"