0

我在尝试获取片段中的 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

4

1 回答 1

0

支持库将一个附加视图插入到视图层次结构中。根据 NoSaveStateFrameLayout.java 中的评论:“Pre-Honeycomb 版本的平台没有 View.setSaveFromParentEnabled(),因此我们将其插入到视图及其父级之间。”

因此,您需要通过以下方式进行检查:

View myView = (NoSaveStateFrameLayout)getView();
if (myView != null) {
  myView = myView.getChildAt(0);
}

或者在实例变量中跟踪 onCreateView 返回的视图。

于 2014-05-02T18:44:36.340 回答