首页 > 技术文章 > 判断ViewStub是否被inflate 过的方式。

jonzone 2017-01-04 13:19 原文

我们在使用ViewStub的时候,一般ViewStub都是特定条件出发inflate的。这种触发条件有多个的时候(或者有多处ViewStub的inflate 代码时)我们往往需要判断ViewStub之前有没有inflate过。

经过参考网上的文档,总结找出了两种方法:

1.ViewStub被inflate后就不会再布局中存在。所以每次在inflate的时候重新findViewById去页面中寻找一下ViewStub,如果返回值不为null则ViewStub没有被inflate过。

// 每次在inflate之前都调用一遍findViewById
ViewStub viewStub= (ViewStub) findViewById(R.id.viewstub); if(viewStub!=null){ viewStub.inflate(); }

2.利用ViewStub的parent来判断。当ViewStub被inflate后,getParent返回值是null

//初始化,不必每次都调用
ViewStub viewStub=  (ViewStub) findViewById(R.id.viewstub);
....


if(viewStub.getParent() !=null){
    viewStub.inflate();
}

推荐使用第二种方法。

推荐阅读