को रीफ्रेश/प्रतिबिंबित नहीं कर रहा है, मैं एक छवि चुनने के लिए एक फोटो पिकर इरादा का उपयोग कर रहा हूं और उसे एप्लिकेशन-प्राइवेट फ़ाइल में लिख सकता हूं। मेरा अधिकांश महत्वपूर्ण स्रोत कोड नीचे दिखाया गया है। एक बार जब मैं एक बटन दबाता हूं और पहला चित्र चयन उद्देश्य करता हूं, तो यह छवि दृश्य को सफलतापूर्वक अपडेट करता है। हालांकि, एक बार जब मैं छवि चयन बटन को फिर से (उसी गतिविधि में) दबाता हूं, तो छवि दृश्य अपडेट नहीं होता है, जब तक कि मैं बाहर निकलता हूं और गतिविधि को पुनरारंभ नहीं करता। इसलिए मुझे पता है कि छवि सफलतापूर्वक सहेजी जा रही है, लेकिन लेआउट में ImageView क्यों ताज़ा नहीं होगा या अपडेट नहीं होगा?ImageView
public void onResume() {
super.onResume();
ImageView myImageView = (ImageView)findViewById(R.id.contact_image);
if (hasImage) {
myImageView.setImageURI(Uri.fromFile(getFileStreamPath(TEMP_PHOTO_FILE)));
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PHOTO_PICKED:
if (resultCode == RESULT_OK) {
if (data != null) {
Bundle extras = data.getExtras();
if (extras != null) {
hasImage = true;
bmp = (Bitmap) extras.get("data");
}
}
}
break;
}
}
private OnClickListener mChooseImage = new OnClickListener() {
@Override
public void onClick(View v) {
try {
// Launch picker to choose photo for selected contact
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", ICON_SIZE);
intent.putExtra("outputY", ICON_SIZE);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile()));
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, PHOTO_PICKED);
} catch (ActivityNotFoundException e) {
// LOG THIS
}
}
};
private File getTempFile() {
try {
if (!hasImage) {
FileOutputStream fos = openFileOutput(TEMP_PHOTO_FILE, MODE_WORLD_WRITEABLE);
fos.close();
}
return getFileStreamPath(TEMP_PHOTO_FILE);
} catch (FileNotFoundException e) {
// To be logged later
return null;
} catch (IOException e) {
// To be logged later
return null;
}
}
गतिविधि परिणाम पर, मैंने ImageView की छवि यूआरआई को इस फ़ाइल में सेट किया है।
जब यह पहली बार पूर्ण हो जाता है, तो छवि दृश्य इसे प्रतिबिंबित करने के लिए बदलता है। हालांकि, अगर मैं छवि को फिर से (एक ही गतिविधि) चुनने का प्रयास करता हूं, तो छवि दृश्य तब तक अपडेट नहीं होगा जब तक कि मैं बाहर निकलता हूं और गतिविधि को फिर से दर्ज नहीं करता। मुझे यकीन नहीं है कि ऐसा क्यों होता है, ऐसा इसलिए है क्योंकि मैं temp.jpg को हर बार लिखने की कोशिश कर रहा हूं? या क्या मुझे ImageView में बदलावों को प्रतिबिंबित करने के लिए किसी भी तरह से अपना लेआउट रीफ्रेश करने की आवश्यकता है?
क्या कोई कोड गुम है? आपने जो लिखा है उससे चयनित छवि में आउटपुट स्ट्रीम खोलने की आवश्यकता नहीं है। –
मैंने अपने स्रोत कोड का बहुमत जोड़ा है। मुझे यह भी लगता है कि अगर मैं बिटमैप के रूप में इरादे से मूल्य वापस कर देता हूं, तो छवि दृश्य सफलतापूर्वक अपडेट हो जाता है। हालांकि, मैं अभी भी समस्या का स्रोत जानना चाहता हूं। – damonkashu
तो क्या ऐसा कुछ है जिसे मैं ImageViews या छवि पिकर इरादे के बारे में नहीं जानता? कुछ ऐसा जो गतिविधि को पुनरारंभ करने तक परिवर्तन को प्रतिबिंबित नहीं करता है? – damonkashu