Imageview

  • 3 Antworten
  • Letztes Antwortdatum
M

Moritz92

Neues Mitglied
0
Hallo,

ich habe eine kleines Problem und hoffe ihr könnt mir helfen.

Seit letzter Woche beschäftige ich mich mit dem Programmieren von Androidapps und habe schon einiges gelernt.

Nun bin ich an einem Punkt angelangt wo ich nicht wirklich weiter komme.

Die App besteht aus einem Button und einem Imageview. Mit dem Button wird die Kamera gestartet und das geschossene Bild in das Imageview geladen, das funktioniert aber leider nicht. Das Bild erscheint nie im Imageview. :mad2:

könnt ihr mir helfen?

MainActivity:

PHP:
package de.test.kamera;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
		}

public void kamera (View view) {
		
		Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
		startActivityForResult(cameraIntent, 42);        
		}
	
	
	
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 42) {
	    Bitmap kameraausgabe = (Bitmap) data.getExtras().get("data"); 
	    ImageView img = new ImageView(this);
	    img.setImageBitmap(kameraausgabe);  
		}
	
	
	}
	}

activity_Main.xml

PHP:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/kamera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="73dp"
        android:text="Button" 
		android:onClick= "kamera" />
    
    <ImageView
        android:id="@+id/kameraausgabe"
        android:layout_width="200dp"
        android:layout_height="150dp"
        android:layout_below="@+id/kamera"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp" />

</RelativeLayout>



Vielen Dank im Voraus!
Mit freundlichem Gruß,
Moritz
 
Hallo Moritz,

damit sollte es funktionieren:
Code:
package de.test.kamera; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends Activity {

    public ImageView img; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    img = (ImageView) findViewById(R.id.kameraausgabe);//Referenz auf deine im XML-Layout definierte ImageView.

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        // Inflate the menu; this adds items to the action bar if it is present. 
        getMenuInflater().inflate(R.menu.main, menu); 
        return true; 
        } 

public void kamera (View view) { 
         
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);  
        startActivityForResult(cameraIntent, 42);         
        } 
     
     
     
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        if (requestCode == 42) { 
        Bitmap kameraausgabe = (Bitmap) data.getExtras().get("data");  
        //ImageView img = new ImageView(this); 
        img.setImageBitmap(kameraausgabe);   
        } 
     
     
    } 
    }

Mfg

pootney
 
Funktioniert :) Danke!

Eine Frage hätte ich noch:

wenn ich nachdem das Foto in das ImageView geladen wurde, das Handy drehe und die App in das Querformat wechselt, dann verschwindet das Bild wieder.
Woran kann das liegen? Jmd. eine Idee?

Liebe Grüße!
 
Hallo Moritz,

sobald der Bildschirm rotiert wird die Methode onCreate erneut aufgerufen bzw. die Activity "neugestartet".
Lies dir folgendes mal durch oder recherchiere einfach danach:
Handling Runtime Changes | Android Developers

Mfg

pootney
 
Zurück
Oben Unten