2011-09-13 9 views
5

में मैं ब्लैकबेरी जेडीई प्लगइन v1.3 का उपयोग कर रहा हूं और मैं बिटमैपफ़िल्ल्ड बनाने के लिए इस कोड को आजमा रहा हूं और मैंनेEncodedImage.getEncodedImageResource एक ही नाम के साथ छवि को लोड करने में असफल हो जाता है ग्रहण (ब्लैकबेरी प्लगइन)

this.bitmap = EncodedImage.getEncodedImageResource("ico_01.png"); 
this.bitmap = this.bitmap.scaleImage32(
        this.conf.getWidthScale(), this.conf.getHeightScale()); 
this.imagenLoad = new BitmapField(this.bitmap.getBitmap(), this.style); 

यह कोई त्रुटियों के साथ ठीक काम करता है, लेकिन अब मैं एक ही नाम के साथ छवियों के इस सेट है, लेकिन इस तरह अलग अलग सबफ़ोल्डर में: हमेशा यह इस तरह से किया

enter image description here

मैंने बनाया यह वास्तव में स्पष्टीकरण के लिए छोटा है अनिवार्य कारण मैं फ़ाइलों का नाम बदलना नहीं चाहता हूं इसलिए वे सभी अलग हैं। मैं जानना चाहता हूं कि विभिन्न सबफ़ोल्डर तक कैसे पहुंचे। "res/img/on/ico_01.jpg", "img/on/ico_01.jpg", "on/ico_01.jpg" कुछ उदाहरण हैं जिन्हें मैंने कोशिश की और विफल कर दिया।

उत्तर

2

ऐसा लगता है कि EncodedImage.getEncodedImageResource(filename) जहां यह अपने संसाधन निर्देशिका वृक्ष में है की परवाह किए बिना filenameका पहला उदाहरण प्राप्त हो सकें।

यदि आपके पास अलग-अलग निर्देशिकाओं (जैसा आपके पास है) में एक ही फ़ाइल नाम वाली छवियां हैं तो यह बहुत उपयोगी नहीं है।

मैंने जिस समाधान का उपयोग किया है वह है अपनी खुद की विधि बनाना जो पथ और फ़ाइल नाम के आधार पर एक छवि वापस कर सकता है।

public static Bitmap getBitmapFromResource(String resourceFilename){ 

    Bitmap imageBitmap = null; 

    //get the image as a byte stream 
    InputStream imageStream = getInstance().getClass().getResourceAsStream(resourceFilename); 
    //load it into memory 
    byte imageBytes[]; 
    try { 

     imageBytes = IOUtilities.streamToBytes(imageStream); 
     //create the bitmap 
     imageBitmap = Bitmap.createBitmapFromBytes(imageBytes, 0, imageBytes.length, 1); 

    } catch (IOException e) { 
     Logger.log("Error loading: "+resourceFilename+". "+e.getMessage()); 
    } 

    return imageBitmap; 
}