ImageView mit Kamerabild ersetzten in einem Fragment

  • 4 Antworten
  • Letztes Antwortdatum
R

RoterBaron

Neues Mitglied
0
Hallo Leute,
einen schönen Abend :D.
Ich stehe schon sehr lange vor einem Problem.
Ich möchte, wie im Titel beschrieben, aus einem Fragment eine Kamera öffnen, ein Foto machen, ImageView mit Foto ersetzten.

Ich kann in dem Fragment die Kamera öffnen, aber die ImageView wird einfach nicht geändert, ich habe auch statt einem Bild versucht nur die Hintergrundfarbe des ImageViews zu ändern, aber auch das geht nicht.

Hier mein Code:

MAIN-Activity:
Code:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	Fragment myFragment = (Fragment) getSupportFragmentManager().findFragmentById(R.id.fragment_new);
	myFragment.onActivityResult(requestCode, resultCode, data);
}

FRAGMENT-Activity:
Code:
 imageView2 = (ImageView) rootView.findViewById(R.id.image_pic2);
.....
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    	
Log.d("Name", "onActivityResult"); 
switch(requestCode){
case CAMERA_PIC_REQUEST_2:
if(resultCode== Activity.RESULT_OK && data != null && data.getExtras().get("data")!=null){
		    		   Log.d("TAG2","Photo pic2"); 
		    		   Bitmap photo2 = (Bitmap) data.getExtras().get("data"); 
		    		   
		               imageView2.setImageBitmap(photo2);
		               Log.d("TAG2","Photo pic2 was set");
			     }
		    	break;
default:
		    		Log.d("Error","Es geht nicht");
        }
    }


Ich wäre super dankbar und glücklich wenn ihr mit helfen könntet.
 
Zuletzt bearbeitet von einem Moderator:
Bist du sicher das die imageview auch die view in der main activity referenziert?

Der ursprüngliche Beitrag von 22:36 Uhr wurde um 22:38 Uhr ergänzt:

Die XML Datei beschreibt nur wie eine imageview aufgebaut ist es referenziert nicht direkt jede imageview die du lädst...Könnte mich irren kenne mich nicht sonderlich aus in xml
 
Hi,
danke für die schnelle Antwort, mit referenzieren meinst du die id setzten?

Hier ist die XML der ImageViews:

<ImageView
android:id="@+id/image_pic2"
android:src="@drawable/ic_action_new"
android:contentDescription="@string/alttext"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/raster9"
android:layout_marginLeft="@dimen/raster1"
android:layout_marginTop="@dimen/raster2"
android:layout_weight="1"
android:background="#A4A4A4"
android:onClick="onButtonClick"/>
 
Ich weiß ja nicht ob du damit richtig die imageview referenziert oder nicht...Ein fragment hat seine eigene view Hierarchie von daher denke ich mal nicht sonst wäre das ein Punkt wo man memory leaks verursachen könnte indem verhindert wird das der GC dann diese aufräumt...
Warte lieber auf einen Input von einem XML pro

Der ursprüngliche Beitrag von 23:09 Uhr wurde um 23:11 Uhr ergänzt:

Du könntest ja mal versuchen die Referenz auf das imageview von der mainactivity zu übergeben wenn es da nicht klappt dann liegt es wahrscheinlich nicht daran
 
Hi also ich habe jetzt etwas versucht:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment myFragment = (Fragment) getSupportFragmentManager().findFragmentById(R.id.fragment_new);

ImageView imv1= (ImageView)findViewById(R.id.image_pic1);
imv1.setBackgroundColor(Color.rgb(255, 0, 255));
ImageView imv2= (ImageView)findViewById(R.id.image_pic2);

((FragmentNew)myFragment).check(requestCode, resultCode, data,imv1,imv2);
}

und in dem Fragment:

public void check(int requestCode, int resultCode, Intent data,ImageView imv1,ImageView imv2) {

Log.d("Name", "onActivityResult");
switch(requestCode){
case CAMERA_PIC_REQUEST_1:
if(resultCode== Activity.RESULT_OK && data != null && data.getExtras().get("data")!=null){
Log.d("TAG1","Photo pic1");
Bitmap photo = (Bitmap) data.getExtras().get("data");
imv1.setImageBitmap(photo);
Log.d("TAG1","Photo pic1 was set");

}
break;

case CAMERA_PIC_REQUEST_2:
if(resultCode== Activity.RESULT_OK && data != null && data.getExtras().get("data")!=null){
Log.d("TAG2","Photo pic2");
Bitmap photo2 = (Bitmap) data.getExtras().get("data");
//imv2.setImageBitmap(photo2);
imv2.setBackgroundColor(Color.rgb(255, 0, 255));
Log.d("TAG2","Photo pic2 was set");
}
break;


default:
Log.d("Error","Es geht nicht");
}
}

Die Log.d werden immer ausgegeben, aber es wird weder die Farbe geändert(zum Testen) noch das Bild gesetzt? ich versteh es einfach nicht :(
 
Zurück
Oben Unten