Etwas ein bisschen komisch ist in meinem Code passiert, und ich verstehe nicht, was es ist ...Android: weird Nullpointer in Image Widget
Ich habe einige Imageviews
, 4 von ihnen, die um angeklickt werden können, um starten Sie die CropActivity
, beschneiden Sie ein Bild und das zugeschnittene Bild soll in der angeklickt ImageView
angezeigt werden.
So , um herauszufinden, welche der 4 ImageViews
geklickt wurde ich tun, wie folgt:
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;
}
}
So, jetzt ... Wenn ich richtig bin .... das geklickt ImageView
in clickedImgVw
gespeichert .....
Das Problem ist, dass ..., wenn ich versuche clickedImgVw
in onActivityResult
zugreifen zu können, nach dem Zuschneiden, ich 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);
}
}
}
}
Was geht hier vor ?, Was ist hier falsch?
* ------- --------- EDIT *
Nach einiger Debug habe ich festgestellt, dass der Variable mit dem Namen tag
seinen Wert auf Laufzeit ändert.
Ich habe einige Screenshots es im gleichen Debug-Durchlauf zeigt ...., wenn die Anwendung in einer Klasse betritt namens AppCompatViewInflater.java
die Variable tab
verliert seinen Wert
Vor tag
bekommt Wert:
Nach tag
bekommt Wert:
Nach Eingabe AppCompatViewInflater.java
:
eine Ausnahme in Schalter Standardpfad Wurf, wenn der Tag ist etwas, das man nicht erwarten, . In diesem Fall können Sie tatsächlich eine NPE – Jens
zeigen, wie Sie Tags für die Ansichten festlegen. Warum machst du nicht 'this.clickedImgVw = (ImageView) v;'? –
hey Jens, danke, aber ich bin sehr sicher über die Tags, ich habe sie in den XML-Code, aber auch ich habe das empfangene 'tag' Protokolliert, und es ist immer einer der 4 Tags – codeKiller