屏幕方向更改时tabhost重新加载

时间:2011-12-09 02:14:10

标签: android

我使用tabhost作为我的主要活动。 并在首字母显示第一个列表。 然后点击第二个列表。 这时,屏幕方向改变,屏幕变为初始列表。 怎么解决? 我已经尝试过: 1.在Manifest中添加android:configChanges =“orientation | keyboardHidden”android:screenOrientation =“portrait” 2.在每个活动中添加onConfigurationChanged

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

还有其他解决方案吗?

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

在创建时,调用AActivity以显示list1。 在AActivity listonclick中,我将其调用BActivity来显示list2。 但是当屏幕改变时,tabcontent会调用AActivity并显示list1。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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