【问题标题】:tabhost reload while screen orientation changetabhost 在屏幕方向更改时重新加载
【发布时间】:2011-12-09 02:14:09
【问题描述】:

我使用 tabhost 作为我的主要活动。 并在初始时显示第一个列表。 并点击第二个列表。 此时,屏幕方向改变,屏幕变为初始列表。 如何解决? 我已经在下面尝试了: 1.在Manifest中添加android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" 2.在每个activity中添加onConfigurationChanged

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

还有其他解决办法吗?

对不起~ 我的意思是tabcontent(FrameLayout)中的内容。 并且当屏幕改变时标签(TabWidget)没有重新加载。

在创建时,调用 AActivity 以显示 list1。 在 AActivity listonclick 中,我让它调用 BActivity 来显示 list2。 但是换屏时,tabcontent会调用AActivity并显示list1。

【问题讨论】:

  • 请详细一点。

标签: android


【解决方案1】:

如果我理解正确,您需要保存选择的选项卡。你可以试试这样的...

public class MyTabActivity extends TabActivity
    implements TabHost.onTabChangeListener {

    private int currentTab = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        getTabHost().setOnTabChangedListener(this);
    }

    @Override
    protected void onResume() {
        ...
        currentTab = getSharedPreferences("myapp", MODE_PRIVATE).getInt("currentTab", 0);
        getTabHost().setCurrentTab(currentTab);
    }

    @Override
    protected void onPause() {
        ...
        getSharedPreferences("myapp", MODE_PRIVATE).edit().putInt("currentTab", currentTab).commit();
    }

    @Override
    public void onTabChanged(String tabId) {
        currentTab = getTabHost().getCurrentTab();
    }
}

【讨论】:

    【解决方案2】:

    当屏幕的方向改变时,你的 Activity 会再次调用 onCreate。也许您正在 onCreate 活动中设置“初始列表”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多