Android 为什么tabwidget不保持修改状态?

Android 为什么tabwidget不保持修改状态?,android,android-tabhost,revert,Android,Android Tabhost,Revert,在android中,我有一个TabActivity A,其中我创建了一个名为loading with the Activity B的选项卡 在活动B中,我修改了TabActivity A中的TabWidget,以便通过对TabActivity A中TabHost的静态引用添加更多选项卡 在我启动一个新的activity C并按下BACK键之后,TabWidget只有一个称为Loading的选项卡 我尝试了活动B的onResume方法来重新创建选项卡,但它不再起作用 有人知道它为什么会这样做吗?我

在android中,我有一个TabActivity A,其中我创建了一个名为loading with the Activity B的选项卡

在活动B中,我修改了TabActivity A中的TabWidget,以便通过对TabActivity A中TabHost的静态引用添加更多选项卡

在我启动一个新的activity C并按下BACK键之后,TabWidget只有一个称为Loading的选项卡

我尝试了活动B的onResume方法来重新创建选项卡,但它不再起作用


有人知道它为什么会这样做吗?我如何修复它?

依赖指向UI组件(如TabHost)的静态变量可能会导致内存泄漏。不要这样做。而是在TabActivity中注册一个BroadcastReceiver以添加新选项卡。这样,您就不用修改静态变量,而是发送一个广播ContextsendBroadcastIntent来告诉选项卡活动您需要一个新选项卡

此外,请确保保存TabActivity的状态,以便在Android操作系统出于某种原因破坏您的活动时可以恢复它。我建议使用OnRetainOnConfiguration实例。。。大概是这样的:

private State mState;
public void onCreate(Bundle b){
    // somewhere in onCreate
    mState = (State) getLastNonConfigurationInstance();
    if( mState == null ){
        mState = new State();
    } else {
        for(TabSpec tab : mState.tabs){
            //add them to the tab host
        }
    }
}
@Override
public Object onRetainNonConfigurationInstance() {
    return mState;
}

private static class State{
    List<TabSpec> tabs;
    // more stuff that you want to save
}