我在片段中尝试获取baseView(在onCreateView中膨胀并返回)时遇到了麻烦,因为我收到了意外的NoSaveStateFrameLayout。
我不知道为什么,有人可以解释一下吗?
代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LogUtil.d(TAG, "onCreateView ...");
View v = inflater.inflate(R.layout.gen_blank, container, false);
return v;
}
当我在所有生命周期中运行此代码时:
LogUtil.v(TAG, "getview = "+getView());
它记录相同的消息:getview = android.support.v4.app.NoSaveStateFrameLayout@41afdb70
答案 0 :(得分:0)
支持库在视图层次结构中插入另一个视图。根据NoSaveStateFrameLayout.java中的评论:“该平台的Pre-Honeycomb版本没有View.setSaveFromParentEnabled(),所以我们在视图及其父级之间插入它。”
所以你需要用以下方法检查:
View myView = (NoSaveStateFrameLayout)getView();
if (myView != null) {
myView = myView.getChildAt(0);
}
或者跟踪onCreateView在实例变量中返回的视图。