如何解决错误 - 尝试在空对象引用上调用虚拟方法“int android.graphics.Bitmap.getHeight()”
当图像加载到回收器视图中时,我正在尝试将高度和宽度从固定更改为匹配父级或换行内容https://stackoverflow.com/a/67860281/15537898 这里是我正在尝试实现的答案,但在它给了我之后这个错误
尝试调用虚方法'int android.graphics.Bitmap.getHeight()' 在空对象引用上
Fragment_Search.java
ShapeableImageView siv;
Bitmap bm;
int height = bm.getHeight();
int width = bm.getWidth();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search,container,false);
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
postRecyclerView = view.findViewById(R.id.postRecyclerView);
siv = view.findViewById(R.id.imageView);
ViewGroup.LayoutParams params = siv.getLayoutParams();
params.height = height;
params.width = width;
postRecyclerView.setLayoutManager(
new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)
);
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
getData();
mUploads = new ArrayList<>();
postsAdapter = new PostAdapter_Search(getContext(),mUploads);
postRecyclerView.setAdapter(postsAdapter);
return view;
}
解决方法
位图变量 (bm) 未初始化,即使您在 onCreateView 中初始化它,您的应用程序仍然会崩溃,因为您试图在 bm 变量初始化之前获取位图宽度和高度。你可以这样做
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search,container,false);
bm = initialize_bitmap_here
width = bm.getWidth()
height = bm.getHeght()
return view;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。