Android SDK Bitmap laden na save crash

Pagina: 1
Acties:

Onderwerpen


  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

Topicstarter
Hi allemaal,

Ik ben bezig met het maken van een App voor Android, wat tot nu toe allemaal best wel lekker ging. Ik zit nu echter met een probleem waar ik echt niet uitkom :S

Het zit zo
Ik maak nu een bitmap aan waarop via een canvas wordt getekend. Ik sla de bitmaps lokaal op via de volgende functie (res. 800x480):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void storeNote(int itemLocation, String noteName, ArrayList<Bitmap> Bitmaps, Boolean ShowSucces) {
        FileOutputStream fileOS;
        
        if (itemLocation == CONSTANTS.STORAGE_PHONE)
        {
            for(int i=0; i < Bitmaps.size(); i++)
            {
                try {
                    fileOS = LocContext.openFileOutput("wpp.page." + i + "." + noteName + ".jpg", Context.MODE_PRIVATE);
                    Bitmaps.get(i).compress(Bitmap.CompressFormat.JPEG, 80, fileOS);
                    fileOS.close();
                }
                catch (FileNotFoundException e) {
                    
                } catch (IOException e) {
                    
                }
            }
        }
        
        if (ShowSucces)
        {
            DeBugMessage = Toast.makeText(LocContext, Bitmaps.size() + " pages saved", 10);
            DeBugMessage.show();
        }
    }


Nu gaat dit (volgens mij) allemaal prima aangezien ik deze files later gewoon weer kan vinden die FilesDir() en hebben de files een normale size. Wanneer ik echte deze files weer probeer te openen met de volgende functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public Bitmap retrievePage(int itemLocation, String noteName, int PageNumber) {
        Bitmap              Page = null;
        FileInputStream     fileIS;
        BufferedInputStream fileBuf;
        
        if (itemLocation == CONSTANTS.STORAGE_PHONE)
        {
            try {
                fileIS      = LocContext.openFileInput("wpp.page." + PageNumber + "." + noteName + ".jpg");
                fileBuf     = new BufferedInputStream(fileIS);
                
                Page        = BitmapFactory.decodeStream(fileBuf);
                
                fileBuf.close();
                fileIS.close();
            }
            catch (Exception e) {
                DeBugMessage = Toast.makeText(LocContext, "Error loading Bitmap!", 10);
                DeBugMessage.show();
            }
        }
        
        return Page;
    }


Crashed de App zonder duidelijk reden! De output van DDMS is ook niet echt verhelderend:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
09-02 19:28:33.923: ERROR/AndroidRuntime(598): FATAL EXCEPTION: main
09-02 19:28:33.923: ERROR/AndroidRuntime(598): java.lang.RuntimeException: Unable to start activity ComponentInfo{luova.writing_pad_pro/luova.writing_pad_pro._activityNotePad}: java.lang.NullPointerException
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.os.Looper.loop(Looper.java:123)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at java.lang.reflect.Method.invokeNative(Native Method)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at java.lang.reflect.Method.invoke(Method.java:521)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at dalvik.system.NativeStart.main(Native Method)
09-02 19:28:33.923: ERROR/AndroidRuntime(598): Caused by: java.lang.NullPointerException
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at luova.writing_pad_pro._activityNotePad.loadBitmaps(_activityNotePad.java:122)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at luova.writing_pad_pro._activityNotePad.onCreate(_activityNotePad.java:37)
09-02 19:28:33.923: ERROR/AndroidRuntime(598):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)


Volgens mij komt dit probleem wel vaker voor maar ik heb er echt geen oplossing voor kunnen vinden :(

Is hier misschien een Android/Java-Guru die mij verder op weg kan helpen? Het liep namelijk het zo lekker ;)

-- All science is either physics or stamp collecting


  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 16-09 19:01

Tux

code:
1
2
 Caused by: java.lang.NullPointerException
(..) at luova.writing_pad_pro._activityNotePad.loadBitmaps(_activityNotePad.java:122)


Lijkt me wel interessant om te weten wat er op regel 122 in _activityNotePad.java gebeurt ;)

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

Topicstarter
(121 en 122)
code:
1
2
Temp = SupFunc.retrievePage(CurrentNoteStorage, CurrentNoteName, i);
if (Temp != null) CurNotePadView.CanvasFinal.add(Temp);


De ingeladen bitmap wordt dus in een ArrayList<Bitmap> gezet. Dit werkt echter wel gewoon als ik een schone bitmap pak:
code:
1
CurNotePadView.CanvasFinal.add(Bitmap.createBitmap(CurNotePadView.getWidth(), CurNotePadView.getHeight(), Bitmap.Config.ARGB_8888));


Edit: Als ik Temp.getWidth() of getHeight() doe krijg ik wel de normale dimensies terug

[ Voor 9% gewijzigd door Iska op 03-09-2010 00:22 ]

-- All science is either physics or stamp collecting


Acties:
  • 0 Henk 'm!

  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

Topicstarter
Met grote schaamte moet ik bekend maken dat het nu wel werkt.. het bleek namelijk zo dat CurNotePadView nog niet was geïnitialiseerd wanneer de functie LoadBitmaps werd aangeroepen :X ;)

-- All science is either physics or stamp collecting


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 21:57
Geen breakpoints gezet?