东西有点怪异的是在我的代码发生的事情,我不明白它是什么......安卓:在ImageView的小部件怪异的NullPointerException
我有一些Imageviews
,其中4个,可单击,以启动CropActivity
,裁剪图像,裁剪的图像将显示在点击ImageView
。
所以,找出其中的4 ImageViews
被点击我这样做:
public void onImageViewClicked(View v){
String tag = v.getTag().toString();
switch (tag){
case "imgvW_1":
this.clickedImgVw = (ImageView) findViewById(R.id.imgvW_1);
break;
case "imgvW_2":
this.clickedImgVw = (ImageView) findViewById(R.id.imgvW_2);
break;
case "imgvW_3":
this.clickedImgVw = (ImageView) findViewById(R.id.imgvW_3);
break;
case "imgvW_4":
this.clickedImgVw = (ImageView) findViewById(R.id.imgvW_4);
break;
}
}
所以现在......如果我是正确的....点击ImageView
存储在clickedImgVw
.....
的问题是...当我尝试访问clickedImgVw
在onActivityResult
,裁剪后,我得到NullPointerException
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 && resultCode == RESULT_OK){
ImageCropFunction();
}
else if (requestCode == 2) {
if (data != null) {
imgUri = data.getData();
ImageCropFunction();
}
}
else if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
if (data != null) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
//THIS LINE HERE GIVES NULLPOINTEREXCEPTION ---------
String tag = clickedImgVw.getTag().toString();
//THIS LINE HERE GIVES NULLPOINTEREXCEPTION ---------
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(10))
.build();
imageLoader.displayImage(String.valueOf(resultUri),clickedImgVw, options);
}
}
}
}
这是怎么回事?这里有什么问题?
* -------编辑--------- *
一些调试后,我注意到一个名为tag
变量改变它在运行时的值。
我有一些screencaps显示相同的调试运行期间,它....当应用程序在一个名为类进入AppCompatViewInflater.java
变量tab
失去了它的价值
tag
之前得到的值:
tag
后得到的值:
进入AppCompatViewInflater.java
后:
扔在开关默认路径异常,如果标签是你不要指望。在这种情况下,您实际上可以获得一个NPE – Jens
显示如何将标记设置为视图。另外你为什么不只是'this.clickedImgVw =(ImageView)v;'? –
嘿Jens,谢谢,但我对标签非常肯定,我已经把它们放在XML代码中,但我也测试了记录收到的'tag',它总是4个标签之一 – codeKiller