So habe ich ein Imageview1, dass beim Klicken auf eine neue Aktivität gestartet wird, wo das gleiche Bild in einem neuen Bildansicht2 bei der nächsten Aktivität angezeigt wird. Auf das imageview1, auf das geklickt wird, gelangt man über eine Listview auf meine Hauptaktivität. Die Listenansicht wird von einem Array ausgefüllt, und jedes Listenansichtselement hat ein entsprechendes Bild.Fehler beim Übertragen von Bild aus Bildansicht auf zweite Aktivität
Wenn also ein Listenansichtselement angeklickt wird, wird eine neue Aktivität gestartet, in der sich imageview1 befindet. Diese Bildansicht wird mit einem XML-Datadarray gefüllt, das auf das Zeichenbild verweist.
Ich habe Probleme, das Bild von meiner ersten Bildansicht zur nächsten auf der neuen Aktivität zu übergeben. Ich erhalte eine Nullzeiger-Ausnahme, die ich unten eingefügt habe. Ich bin sehr neu in der Programmierung und bin mir nicht wirklich sicher, wie ich das Problem beheben kann. Jede Hilfe würde wirklich geschätzt werden.
heres Klasse meiner routeDetails, die die erste Imageview
public class RouteDetails extends AppCompatActivity {
ImageView routeImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_route_details);
//TextView for route details
final TextView routeDetailsView = (TextView) findViewById(R.id.routeDetailsView);
routeDetailsView.setText(getIntent().getExtras().getString("route"));
//ImageView for route details
routeImage = (ImageView) findViewById(R.id.routeImage);
routeImage.setImageResource(getIntent().getIntExtra("imageResourceId", 0));
//passing image to fullscreenimage
routeImage.setDrawingCacheEnabled(true);
routeImage.buildDrawingCache();
final Bitmap bitmap = routeImage.getDrawingCache();
////////// Trying to pass image to new activity
routeImage.setOnClickListener(new View.OnClickListener() {
public void onClick(View view)
{
Intent i = new Intent(RouteDetails.this, FullScreenImage.class);
//Bitmap _bitmap; // your bitmap
ByteArrayOutputStream _bs = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs);
i.putExtra("byteArray", _bs.toByteArray());
startActivity(i);
}
});
////////////
}
und herer im Versuch, meine fullscreenimage Klasse enthält das Bild zu
public class FullScreenImage extends AppCompatActivity {
TouchImageView routeImageFull;
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
setContentView(R.layout.full_screen_image);
routeImageFull = (TouchImageView) findViewById(R.id.fullScreenImageView);
if(getIntent().hasExtra("byteArray")) {
TouchImageView routeImageFull= new TouchImageView(this);
Bitmap bitmap = BitmapFactory.decodeByteArray(
getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length);
routeImageFull.setImageBitmap(bitmap);
}
}
}
und heren der Fehler im bekommen
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zach.listview, PID: 3429
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
at com.example.zach.listview.RouteDetails$1.onClick(RouteDetails.java:47)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
passieren
Mögliche Duplikat [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- i-fix-it) –
Bitte lesen Sie den obigen Link für Vorschläge, um herauszufinden, was den Fehler verursacht. Sie sollten in Zeile 47 von RouteDetails.java beginnen. –
'routeImage.getDrawingCache()' hat Sie null zurückgegeben, anscheinend –