如何解决Android:在创建和显示 AlertDialog 之前获取资源 ID?
我目前正致力于让用户点击一个图像,然后显示一个带有该图像放大版本的 AlertDialog。我不太确定 AlertDialog 是否是解决此问题的最佳方式,但这是我目前的解决方案。
在显示警报对话框之前,我发现自己很难获得 ImageView 的资源 ID。这是发生错误的确切代码段(注释是修复尝试失败):
mPhotoView.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ResourceType")
@Override
public void onClick(View view) {
if(mPhotoView != null){
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
dialog.setView(inflater.inflate(R.layout.zoomed_image,null)).create();
//medImg.setImageResource(dialog.getContext().getResources().getLayout(R.layout.zoomed_image).getIdAttributeResourceValue(R.id.ivZoomedImg));
//ivZoomedImg = getActivity().findViewById(R.id.ivZoomedImg);
//ivZoomedImg = view.findViewById(R.id.ivZoomedImg);
Bitmap bm = PictureUtils.getScaledBitmap(mPhotoFile.getPath(),getActivity());
ivZoomedImg.setImageBitmap(bm); // <- null reference
dialog.show();
}
}
});
具体来说,我似乎无法找到一种方法来访问应该通过 LayoutInflator 实例化的 R.id.ivZoomedImg
?老实说,我什至不确定这是否可能,尽管我不明白为什么会这样。有谁知道解决这个问题的最佳方法是什么?
注意事项:
R.layout.zoomed_image
只是一个 XML 布局,包含一个 ID 为 R.id.ivZoomedImg
mPhotoView
是被点击以使其显示更大的图像
解决方法
修复只涉及实例化一个独立的 View,您可以从中提取 ImageView 资源 ID!
添加的代码行:
View v = inflater.inflate(R.layout.zoomed_image,null);
ivZoomedImg = v.findViewById(R.id.ivZoomedImg);
dialog.setView(v).create();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。