سؤال

لقد قمت بتطبيق Galleryview في شاشة واحدة تسمى Display_image.xml والتي عرضت فيها العديد من الصور المتاحة على sdcard الآن عندما يحدد المستخدم الصورة ويضغط على زر حفظ الصورة على نفس الشاشة Display_image.xml ثم يجب تغيير الصورة المحددة في صورة ملفه الشخصي في شاشة أخرى.

سؤالي هو كيف يمكنني الحصول على تلك الصورة من شاشة واحدة لتغيير صورة المستخدم في شاشة أخرى ويجب أيضًا إدراج تلك الصورة المحددة في قاعدة البيانات لاسترجاعها لاحقًا عندما يقوم المستخدم بتسجيل الدخول لاحقًا.دعني أخبرك أن صورتي لا تأتي من أي خدمة ويب.

أرجوك أن تساعدني.........اشكرك.........

هل كانت مفيدة؟

المحلول 3

أول شيء عليك القيام به هو إعلان النية

Intent i_cp = new Intent(this,ImagePicker.class);

والاستخدام startActivityForResult(i_cp, 111); والتي سوف تبحث عن بعض النتائج.وفي حالتنا لموضع الصورة؛قيمة عددية.

عن طريق تحديد رمز_الطلب (111) الذي سيتم استخدامه لتحديد النتيجة عند إرجاعها بقصد البدء.هنا لن نستخدم setAction(i_cp.ACTION_PICK); و setType("image/*"); لأننا لن نعيد الصورة، فسنقوم فقط بإرجاع موضع الصورة.سيقتصر استخدامنا للنية على مجرد تمرير واسترجاع القيمة الصحيحة (موضع القيمة).

الآن ماذا عن الحصول على موضع الصورة الذي اختاره المستخدم.يتم الحصول على الموضع في طريقة onItemClick الخاصة بـ GalleryView بواسطة إحدى المعلمات

public void onItemClick(AdapterView parent, View v, int position,long rid)

أعلن الآن عن متغير واحد مثل int pos؛وتعيين -1 لتحديد ما إذا كانت الصورة محددة أم لا وإذا تم تحديد الصورة ثم في حدث عند النقر لموضع قيمة تمرير الزر حفظ الصورة كـ

retIntent.putExtra("SelectedImage", pos);

و في onActivityForResult تحديد النية من خلال رمز الطلب الذي تم تمريره واستخراج هذا الموضع كـ

int pos = data.getExtras().getInt("SelectedImage");

وتعيينه كما

usr_im.setImageResource(ImagePicker.pics[pos]);

وهذه المجموعة من الصور[] التي تحتوي على جميع معرفات الصور المخزنة في إحدى الصور res/drawable مجلد التطبيق الخاص بك، أعلن أنه

public static Integer[] pics={values};

وإلا فلن تتمكن من ضبط الصورة.

نصائح أخرى

يمكنك القيام بذلك بطريقتين: 1) مرر مسار بطاقة SD للصورة المحددة وحمل تلك الصورة مباشرة من المسار في imageeview. 2) يمكنك تحويل الصورة إلى وداعا [] وتمرير البايت [] واستعادة الصورة.

آمل أن تحصل علي. حظ موفق

يستخدم "ActivityForResult".
المفهوم هو بدء نشاط اختيار صورتك عن طريق الاتصال

startActivityForResult(INTENT_OF_YOUR_IMAGECHOOSING_ACTIVITY);

الآن في هذا النشاط، عندما يقوم المستخدم بالنقر على أي من الصور، قم بمعالجة هذا الحدث كما يلي:
بعض OnClick(){<br>Intent resultIntent = new Intent();في هذه النية، قم بتعيين مجموعة بايت من صورتك في الإضافات أو مسار بطاقة sd لصورتك

ثم اتصل setResult(RESULT_OK, resultIntent);


سيؤدي هذا إلى إعادة المكالمة إلى النشاط السابق في الطريقة onActivityResult(int resultCode, ..., Intent data) هنا استخدم البيانات بغرض جلب المعلومات التي تحتاجها

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top