我正在使用ViewStubs在我的布局中加载显示数据.由于我使用ButterKnife来绑定布局组件,因此我有自定义类来保存各个viewstub布局的组件,例如,一个这样的viewstub如下所示.
处理@ layout / featured_content组件的类如下:
public class FeaturedContentView {
@BindView(R.id.art)
ImageView art;
@BindView(R.id.shade)
View shade;
@BindView(R.id.title)
TextView featuredTitle;
@BindView(R.id.performer)
TextView performer;
@BindView(R.id.featured_title)
KerningTextView featuredText;
@BindView(R.id.play_button)
Button play;
@BindView(R.id.shareText)
TextView shareText;
@BindView(R.id.addToFavorites)
ImageView addToFavs;
FeaturedContentView(View view) {
ButterKnife.bind(this,view);
}
}
我像这样膨胀布局:
if (viewstub != null) {
View view = viewstub.inflate();
featuredContentView = new FeaturedContentView(view);
}
上面的方法在我的片段中的两个不同的地方调用.它第一次正确膨胀但第二次引用java.lang.IllegalStateException失败:ViewStub必须具有非null的ViewGroup viewParent.
我该如何处理这种情况.
最佳答案
Android像这样膨胀ViewStub:
>最初以与任何其他视图相同的方式将ViewStub添加到View层次结构
>调用inflate时,将该视图替换为指定的布局.
这意味着,当您第二次调用代码时,原始ViewStub对象与View层次结构长期分离,并且已被完整视图替换.
就个人而言,我认为ViewStub的当前形式非常不方便,特别是在使用ButerKnife时.幸运的是,类本身非常简单,您始终可以创建一个自定义类,它会执行相同的操作并向其添加任何所需的方法(例如isInflated,addInflateCallback等).顺便说一句,Android支持库开发人员也是如此.
原文地址:https://www.jb51.cc/android/430078.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。