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