[Java/android] getResources() doet applicatie crashen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • roel0
  • Registratie: Maart 2011
  • Laatst online: 15-09 20:45
Gegroet,

Ik probeer sinds enkele dagen een simpele applicatie te maken voor android en zo die wereld een beetje te ontdekken. Echter wil ik enkele bestanden toevoegen waarmee ik kan goochelen in de applicatie. Ik probeer de toegevoegde bestanden zo te laden:
code:
1
Drawable bunny = getResources().getDrawable(R.drawable.testdrie);

De afbeelding heb ik toegevoegd aan de folder res/drawable. Eclipse genereerde hierdoor de volgende code:
code:
1
2
3
4
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
        public static final int testdrie=0x7f020001;   
    }

Alles zou dus goed moeten werken, maar de applicatie crashed.
Vreemd genoeg kan ik via de volgende weg wel de afbeelding laden:
code:
1
ImageView image = (ImageView) findViewById(R.id.testdrie);

code:
1
2
3
4
5
6
        <ImageView
            android:id="@+id/testdrie"
            android:layout_width="1045dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/testdrie" />


Na wat googlen heb ik me niet op een fout kunnen betrappen. Iemand enig idee wat de reden tot falen kan zijn?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

Verwijderd

Misschien kan je ons via LogCat vertellen wat de error is die je precies krijgt. Mijn eerste gok zou zijn dat je werkt buiten een Activity class en daarom een 'Context' mee moet geven als argument aan getResources.

Maar dat is slechts gokken, laat ons even de output van LogCat zien anders.

Acties:
  • 0 Henk 'm!

  • roel0
  • Registratie: Maart 2011
  • Laatst online: 15-09 20:45
Verwijderd schreef op zaterdag 12 november 2011 @ 10:03:
Misschien kan je ons via LogCat vertellen wat de error is die je precies krijgt. Mijn eerste gok zou zijn dat je werkt buiten een Activity class en daarom een 'Context' mee moet geven als argument aan getResources.

Maar dat is slechts gokken, laat ons even de output van LogCat zien anders.
Nee ik werk in de Activity class dus dat kan het probleem niet zien :)

Hier is mijn logcat:
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
11-12 09:29:22.554: D/AndroidRuntime(276): Shutting down VM
11-12 09:29:22.554: W/dalvikvm(276): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-12 09:29:22.584: E/AndroidRuntime(276): FATAL EXCEPTION: main
11-12 09:29:22.584: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{wetnschappelijk.project/wetnschappelijk.project.Galgje}: java.lang.NullPointerException
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.os.Looper.loop(Looper.java:123)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-12 09:29:22.584: E/AndroidRuntime(276):  at java.lang.reflect.Method.invokeNative(Native Method)
11-12 09:29:22.584: E/AndroidRuntime(276):  at java.lang.reflect.Method.invoke(Method.java:521)
11-12 09:29:22.584: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-12 09:29:22.584: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-12 09:29:22.584: E/AndroidRuntime(276):  at dalvik.system.NativeStart.main(Native Method)
11-12 09:29:22.584: E/AndroidRuntime(276): Caused by: java.lang.NullPointerException
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
11-12 09:29:22.584: E/AndroidRuntime(276):  at wetnschappelijk.project.Galgje.<init>(Galgje.java:94)
11-12 09:29:22.584: E/AndroidRuntime(276):  at java.lang.Class.newInstanceImpl(Native Method)
11-12 09:29:22.584: E/AndroidRuntime(276):  at java.lang.Class.newInstance(Class.java:1429)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-12 09:29:22.584: E/AndroidRuntime(276):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
11-12 09:29:22.584: E/AndroidRuntime(276):  ... 11 more

Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat je dit probeert te doen voor dat de activity gestart is.

Laad de drawable eens in in de methode onCreate en dan onder de regel super.oncreate();

Acties:
  • 0 Henk 'm!

  • roel0
  • Registratie: Maart 2011
  • Laatst online: 15-09 20:45
Verwijderd schreef op zaterdag 12 november 2011 @ 18:35:
Ik denk dat je dit probeert te doen voor dat de activity gestart is.

Laad de drawable eens in in de methode onCreate en dan onder de regel super.oncreate();
Held! Ik zal overduidelijk nog wat meer info moeten opzoeken voor ik verder ga, wat een domme fout.

Acties:
  • 0 Henk 'm!

Verwijderd

roel0 schreef op zaterdag 12 november 2011 @ 20:25:
[...]

Held! Ik zal overduidelijk nog wat meer info moeten opzoeken voor ik verder ga, wat een domme fout.
Ja, de "activity lifecycle" is hiervoor wel makkelijk. Staat wel in de developer docs. Het is idd wel wat anders dan java development. Succes iig :)

Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
Je roept het eerst aan met R.drawable.testdrie en daarna met R.id.testdrie, dat zijn 2 verschillende variabelen.
Daarnaast is een ImageView niet een Drawable object.

Het is wel mogelijk dat je zowel een Drawable als een ImageView met de naam testdrie hebt, maar die hebben dus niks met elkaar te maken.

Acties:
  • 0 Henk 'm!

Verwijderd

Jegorex schreef op maandag 14 november 2011 @ 09:19:
Je roept het eerst aan met R.drawable.testdrie en daarna met R.id.testdrie, dat zijn 2 verschillende variabelen.
Daarnaast is een ImageView niet een Drawable object.

Het is wel mogelijk dat je zowel een Drawable als een ImageView met de naam testdrie hebt, maar die hebben dus niks met elkaar te maken.
Hij doet het anders perfect op de tweede manier.. Hij laad via een imageView een drawable object. En ook met de goede variabele-namen. Ik snap niet echt wat je hiermee wilt toevoegen? :?

Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 03-09 23:24
My bad, ik had niet goed gekeken.
Pagina: 1