android - 创建 Fragment 并设置视图元素
问题描述
我正在创建一个新片段并想设置一些视图元素属性。这是我尝试的:
new DefaultSlide()
.setImage(R.drawable.logo)
.setTitle("blabla")
.setText("fubar"));
这是我的默认幻灯片:
public class DefaultSlide extends SlideFragment {
@BindView(R.id.defaultImage)
ImageView defImage;
@BindView(R.id.defaultTitle)
TextView title;
@BindView(R.id.defaultText)
TextView text;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_default_slide, container, false);
ButterKnife.bind(this, view);
return view;
}
public DefaultSlide setImage(int image) {
defImage.setImageResource(image);
return this;
}
public DefaultSlide setTitle(String title) {
this.title.setText(title);
return this;
}
public DefaultSlide setText(String text) {
this.text.setText(text);
return this;
}
@Override
public int backgroundColor() {
return R.color.backgroundColor;
}
@Override
public int buttonsColor() {
return R.color.colorPrimary;
}
}
问题是,我得到一个空指针异常。我的猜测是视图元素尚不可见,因此我无法访问它们。在创建片段时如何设置视图属性是否有最佳实践?
解决方案
您必须在 bundle 中传递值并在 onCreateView 中访问它们,并通过传递这些值来调用相关方法。
推荐阅读
- reactjs - 在 getServerSideProps 中未检测到 NextJS cookie 令牌
- java - Spring Boot - 将 JaCoCo 覆盖托管为静态 HTML
- python - 从 Pandas 数据框中提取唯一的连续值
- python - For 循环遍历文件夹中的多个文件
- vertica - 如何在 Vertica SQL 中获取昨天的日期从 00:00:00 开始
- c# - 从 Random.Range 中排除值
- angular - Angular 不能将异步管道与我的 observable 一起使用
- angular - 为 HTML 文件配置 Prettier
- c# - 如何使用 .net 核心中的 C# mongo Db 驱动程序将多个文档组合/合并到一个 c# 对象
- sql - postgres 访问视图内的 cte