Android方向更改

问题描述:

我的选项卡式应用程序不会重新显示方向更改的视图。Android方向更改

我加入

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

我遇到了一个非常类似的问题,并找到了不同的解决方法。它表现在几个不同的情况。看到我的问题[这里](http://stackoverflow.com/questions/8103639/android-orientation-change-causes-imageview-to-dissapear)。 – 2011-11-12 10:11:47

难道只是您的布局不能在横向/纵向模式下工作?旋转后尝试启动你的应用程序,检查是否给出了相同的结果。如果是这样的:修复你的布局:D

+0

该应用程序在两个方向工作。在任一方向改变方向时,它都不会重新显示。 – Tori 2011-01-06 15:20:57

+0

标签...你是否使用tabactivity和自己的活动标签?你是否也添加了代码到你的tabactivity?我会添加一些日志记录来检查什么onconfigchanged函数被调用,什么时候。 – Nanne 2011-01-06 15:28:06

+0

是的,我确实将onconfigchanged添加到了tabactivity中,并且通过日志我可以看到在tab活动和正在显示的活动中都调用了onconfigchanged。问题是没有显示视图。 – Tori 2011-01-06 15:33:17

我有这个问题。经过多次试验和错误之后,我最终通过对清单进行单行更改来解决此问题。

诀窍是

android:configChanges="orientation|keyboardHidden" 

添加到清单您TabActivity的条目。独自留下所有的儿童活动。甚至不打扰执行,甚至不在TabActivity

我不知道如何或为什么这似乎工作,但效果是布局刷新,并且标签和子活动内容都在新的方向正确重绘。

随着成功,我发现最好的方法有屏幕的变化与大多数控制是使景观模式布局XML在一个单独的XML像这样:使用/布局/和/布图设计

res/layout-land/youractivity.xml 

土地/你的布局以及格雷厄姆博兰德的答案是金黄的。

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

上面的代码片段是使我的工作。 :)

喔我相信“未指定”是什么使得系统能够做什么它认为是最好的......

祝你好运!

MonoAndroid与目标API大于13我发现,这将大大的命名空间内,但Activity class线外:

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

导致的OnConfigurationChanged()触发,即使改变清单有不。