東西有點怪異的是在我的代碼發生的事情,我不明白它是什麼......安卓:在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