Nehmen Sie Foto von der Kamera in fragment
In meinem Fragment
ich versuche, das Bild aus meiner Kamera, sondern die onActivityResult
meiner Fragment
ist nicht genannt. Nach der Einnahme dieses Foto Fragment
wird nicht angezeigt und ist der Wechsel zu meinem ersten Fragment
. In gibt keinen anderen Weg für die Aufnahme von Fotos in einer Fragment
oder was mache ich falsch?
Hier ist mein Derzeitiger code:
public void takePhoto() {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(Environment.getExternalStorageDirectory(), "Pic.jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
PhotosListFragment.this.startActivityForResult(intent, 100);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 100:
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = imageUri;
getActivity().getContentResolver().notifyChange(selectedImage, null);
ContentResolver cr = getActivity().getContentResolver();
Bitmap bitmap;
try {
bitmap = android.provider.MediaStore.Images.Media
.getBitmap(cr, selectedImage);
viewHolder.imageView.setImageBitmap(bitmap);
Toast.makeText(getActivity(), selectedImage.toString(),
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getActivity(), "Failed to load", Toast.LENGTH_SHORT)
.show();
Log.e("Camera", e.toString());
}
}
}
}
InformationsquelleAutor der Frage user2106897 | 2013-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versuchte Ihren code, Ihre feinen arbeiten dude. Ich änderte
zu
welche nach dem fotografieren wieder zurück in ein und derselben Aktivität.
Ich denke, dass beide Fragmente werden auf ein und derselben Aktivität.
wenn das der Fall ist, schlage ich vor, Sie erstellen eine neue Aktivität, und stellen Sie das neue fragment in es.
InformationsquelleAutor der Antwort Amitabh Sarkar
Hoffe, dies wird Ihnen helfen:
InformationsquelleAutor der Antwort Sanjay Mangaroliya
Dies ist einer der beliebtesten Problem. Wir finden viele thread zu diesem Thema. Aber keiner von Ihnen ist nützlich für MICH.
Also ich habe das problem gelöst und diese Lösung verwenden.
Lassen Sie uns zuerst verstehen, warum dies geschieht.
Nennen wir
startActivityForResult
direkt aus Fragment aber eigentlich Mechaniker hinter den erfolgen von Aktivität.Sobald Sie rufen
startActivityForResult
aus einem Fragment, requestCode wird geändert zu befestigen Fragment die Identität an den code. Lassen, wird die Aktivität in der Lage sein zu verfolgen zurück, dass die senden Sie diesen Antrag erst einmal das Ergebnis eingegangen ist.Einmal war die Aktivität navigiert zurück, wird das Ergebnis gesendet Aktivität onActivityResult mit dem modifizierten requestCode, die decodiert werden, um original-requestCode + - Fragment die Identität. Nach, dass, Aktivität senden die Tätigkeit Ergebnis zu Fragment über onActivityResult. Und es ist alles getan.
Das problem ist:
Aktivität kann das Ergebnis nur das Fragment wurde direkt befestigt-Aktivität, aber nicht verschachtelt. Das ist der Grund, warum onActivityResult von verschachtelten fragment würde nie aufgerufen wurde, egal was.
Lösung:
1) Start-Kamera-Vorsatz in Ihrem Fragment durch folgenden code:
2) Jetzt in Ihrer Übergeordneten Aktivität überschreiben **
onActivityResult()
:**Haben Sie diesen Aufruf im übergeordneten Aktivität zu machen, damit es funktioniert.
3) In Ihrem fragment nennen:
4) Referenzmethoden für die erste URI:
-> Methode für das Uri aus der Bitmap
-> Methode für das abrufen von Datei-Pfad aus Uri
Das ist es.
Mit dieser Lösung könnte angewendet werden, die für jedes einzelne fragment, ob es verschachtelt ist oder nicht. Und ja, es deckt auch der Fall! Außerdem, die codes sind auch schön und sauber.
InformationsquelleAutor der Antwort KishuDroid
Für Fragment-dies ist die einfachste Lösung:
InformationsquelleAutor der Antwort Paras BK