Wie bekomme ich ein Bild von einem Bildschirm auf einen anderen?
-
27-10-2019 - |
Frage
Ich habe die Galerieansicht in einem Bildschirm mit dem Namen display_image.xml implementiert, in dem ich verschiedene Bilder angezeigt habe, die jetzt auf der SD-Karte verfügbar sind, wenn der Benutzer ein Bild auswählt und die Schaltfläche zum Speichern des Bildes auf demselben Bildschirm drückt. display_image.xml, dann sollte das ausgewählte Bild in seinem / ihrem geändert werdenProfilbild in einem anderen Bildschirm.
Meine Frage ist, wie ich dieses Bild von einem Bildschirm erhalten kann, um das Bild des Benutzers auf einem anderen Bildschirm zu ändern, und dass das ausgewählte Bild auch in die Datenbank eingefügt werden sollte, um später erneut abgerufen zu werden, wenn sich der Benutzer später anmeldet.Lassen Sie mich Ihnen sagen, dass mein Bild nicht von einem Webservice stammt.
Bitte helfen Sie mir ......... Danke .........
Lösung 3
Als erstes müssen Sie eine Absicht deklarieren
Intent i_cp = new Intent(this,ImagePicker.class);
und verwenden Sie startActivityForResult(i_cp, 111);
, der nach einem Ergebnis sucht. in unserem Fall für die Position des Bildes; ein ganzzahliger Wert.
durch Angabe von request_code (111), der zur Identifizierung des Ergebnisses verwendet wird, wenn es von der gestarteten Absicht zurückgegeben wird. Hier verwenden wir nicht setAction(i_cp.ACTION_PICK);
und setType("image/*");
, da wir kein Bild zurückgeben, sondern nur die Position des Bildes zurückgeben. Unsere Verwendung von Intent beschränkt sich darauf, nur den ganzzahligen Wert (Wertposition) zu übergeben und abzurufen.
Wie wäre es nun mit der Position des Bildes, das der Benutzer ausgewählt hat? Die Position wird in der onItemClick-Methode von GalleryView durch einen der Parameter ermittelt
public void onItemClick(AdapterView parent, View v, int position,long rid)
deklarieren Sie jetzt eine Variable wie int pos; und weisen Sie -1 zu, um zu identifizieren, ob das Bild ausgewählt ist oder nicht, und wenn das Bild ausgewählt ist, dann bei einem Klickereignis der Schaltfläche zum Speichern des Bilds die Position als übergeben
retIntent.putExtra("SelectedImage", pos);
und in onActivityForResult identifizieren Sie die Absicht anhand des übergebenen Anforderungscodes und extrahieren Sie diese Position als
int pos = data.getExtras().getInt("SelectedImage");
und setzen Sie es als
usr_im.setImageResource(ImagePicker.pics[pos]);
und dieses Array von Bildern [], das alle IDs von Bildern enthält, die in einem der res/drawable
-Ordner Ihrer Anwendung gespeichert sind, deklarieren Sie es als
public static Integer[] pics={values};
Andernfalls können Sie das Bild nicht einstellen.
Andere Tipps
Sie können dies auf zwei Arten tun: 1) Übergeben Sie den Pfad der SD-Karte des ausgewählten Bilds und laden Sie das Bild direkt aus dem Pfad in der Bildansicht. 2) Sie können das Bild in Byes [] konvertieren und Bytes [] übergeben und das Bild zurückerhalten.
Ich hoffe du kriegst mich. Viel Glück
Verwenden Sie " activityForResult ".
Das Konzept besteht darin, dass Sie Ihre Bildauswahlaktivität durch Aufrufen von starten
startActivityForResult(INTENT_OF_YOUR_IMAGECHOOSING_ACTIVITY);
Wenn der Benutzer in dieser Aktivität auf eines der Bilder klickt, wird dieses Ereignis wie folgt behandelt:
ein generischer Codetagcode
In dieser Absicht setzen Sie das Byte-Array Ihres Bildes in Extras ODER den SD-Kartenpfad Ihres Bildes
Rufen Sie dann OnClick(){<br>Intent resultIntent = new Intent();
auf
Hiermit wird der Aufruf der vorherigen Aktivität in der Methode setResult(RESULT_OK, resultIntent);
HIER zurückgegeben. Verwenden Sie die Daten als Absicht, um die gewünschten Informationen abzurufen.