我试图在我的片段中保存我的视图状态,但我担心我会泄露我的活动。我正在做的是:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state){
if(mView != null){
View oldParent = mView.getParent();
if(oldParent != container){
((ViewGroup)oldParent).removeView(mView);
}
return mView;
}
else{
mView = inflater.inflate(R.id.fragview, null)
return mView;
}
}
我很担心,因为我知道所有的视图都包含在一个上下文中,我不知道它是活动上下文还是应用程序上下文(如果从膨胀器中膨胀)。也许实际地创建视图并使用getActivity().getApplication()设置其属性比使用充气器更好。我希望能得到任何反馈。
谢谢!
编辑:已确认活动泄漏,尽管此代码工作良好,但不要这样做:*(
最佳答案
我试图在我的片段中保存我的视图状态,但我担心我会泄露我的活动。
使用onSaveInstanceState()
(在片段中)和onRetainConfigurationInstance()
(在活动中)跨配置更改维护“视图状态”。我不太确定你可能指的是其他什么“观点状态”。
我很担心,因为我知道所有的视图都包含在一个上下文中,我不知道它是活动上下文还是应用程序上下文(如果从膨胀器中膨胀)。
由于使用Application
进行视图膨胀似乎效果不好,您应该从Activity
进行膨胀。因此,这些视图将引用那些使它们膨胀的活动。