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

我正是这个问题。经过多次反复试验,我最终通过对清单进行一行更改来解决它。

诀窍是添加

android:configChanges="orientation|keyboardHidden"

到您TabActivity在清单中的条目。不理会所有儿童活动。甚至不必费心实施onConfigurationChanged(),甚至在TabActivity.

我不知道这似乎如何或为什么起作用,但效果是布局被刷新,并且选项卡和子活动内容都在新方向上正确重绘。

于 2011-03-17T15:43:49.667 回答
1

成功后,我发现使用大多数控件进行屏幕更改的最佳方法是在单独的 xml 中为横向模式制作布局 xml,如下所示:

res/layout-land/youractivity.xml

使用 /layout/ 和 /layout-land/ 作为您的布局以及 Graham Borland 答案是金。

  <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

Mono使用Android更大的目标 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 回答