Komentáře k článku
Vyvíjíme pro Android: Preference, menu a vlastní Adapter

Téměř každá aplikace potřebuje uživateli nabídnout nějaké nastavení, stejně tak jako na velkou část případů nestačí vestavěné Adaptery. Po přečtení dnešního článku si budete s těmito problémy umět poradit, a navíc se k tomu dozvíte něco o tvorbě menu.
Obrázky?
Málo obrázků :-)
Re: Obrázky?
Nerozumím. Myslíš screenshoty aplikace? To přece není nutné, každý si zároveň se článkem všechno programuje, zkouší a upravuje, ne? :D
Ne, máš pravdu, omlouvám se, v dalších dílech už screenshoty na místech, kde to má smysl, budou.
Aplikace
Tak ani ukazkova aplikace nejede, jen se zobrazí název a nic víc.
Re: Aplikace
To je v pořádku. Zobraz si menu a přidej knížku :).
Re: Aplikace
Že by až tak jednoduchý to bylo? ;-) … Díky, jsem osel.
Otazka do plena
Da sa do preferenci dat nejak i obrazek? (chcem aby si user vybral s moznych obrazkov).. D.
Re: Otazka do plena
Ahoj,
přímo vestavěná pro to žádná Preference není. Ale můžeš rozšířit
DialogPreference
tak, aby zobrazila Tvůj vlastní dialog s výběrem obrázků. Nebo si vyrobit speciální Activity, v níž vybereš obrázek, přidat do preferencí objektPreference
, po kliknutí na ni spustit danou Activity, a až ta vrátí nějaký výsledek, nastavit ho jako hodnotu té preference.Snad se nepletu, jenom píšu z hlavy, co mě napadlo, nezkoušel jsem, jestli tam není nějaký problém, na který jsem nepřišel.
Matěj
Stažený příklad vyhazuje výjimku
Zdravím, stáhnul jsem si úkázkový zdrojový kód, ale při spuštění vyhazuje výjimku, že prý nezná BookshelfAdapter třídu – nepřišel jsem na to proč, ta třída tam je.
05-28 12:22:48.995: D/dalvikvm(884): Not late-enabling CheckJNI (already on)
05-28 12:22:49.645: I/dalvikvm(884): threadid=3: reacting to signal 3
05-28 12:22:49.785: W/dalvikvm(884): Unable to resolve superclass of Lcom/example/bookshelf/BookshelfAdapter; (19)
05-28 12:22:49.785: W/dalvikvm(884): Link of class ‚Lcom/example/bookshelf/BookshelfAdapter;‘ failed
05-28 12:22:49.785: E/dalvikvm(884): Could not find class ‚com.example.bookshelf.BookshelfAdapter‘, referenced from method com.example.bookshelf.BookshelfActivity.updateList
05-28 12:22:49.785: W/dalvikvm(884): VFY: unable to resolve new-instance 39 (Lcom/example/bookshelf/BookshelfAdapter;) in Lcom/example/bookshelf/BookshelfActivity;
05-28 12:22:49.785: D/dalvikvm(884): VFY: replacing opcode 0x22 at 0x0011
05-28 12:22:49.785: W/dalvikvm(884): Unable to resolve superclass of Lcom/example/bookshelf/BookshelfAdapter; (19)
05-28 12:22:49.785: W/dalvikvm(884): Link of class ‚Lcom/example/bookshelf/BookshelfAdapter;‘ failed
05-28 12:22:49.785: D/dalvikvm(884): DexOpt: unable to opt direct call 0x0049 at 0x14 in Lcom/example/bookshelf/BookshelfActivity;.updateList
05-28 12:22:49.815: I/dalvikvm(884): Wrote stack traces to ‚/data/anr/traces.txt‘
05-28 12:22:49.985: D/AndroidRuntime(884): Shutting down VM
05-28 12:22:49.985: W/dalvikvm(884): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
05-28 12:22:49.995: E/AndroidRuntime(884): FATAL EXCEPTION: main
05-28 12:22:49.995: E/AndroidRuntime(884): java.lang.NoClassDefFoundError: com.example.bookshelf.BookshelfAdapter
05-28 12:22:49.995: E/AndroidRuntime(884): at com.example.bookshelf.BookshelfActivity.updateList(BookshelfActivity.java:47)
05-28 12:22:49.995: E/AndroidRuntime(884): at com.example.bookshelf.BookshelfActivity.onCreate(BookshelfActivity.java:29)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.Activity.performCreate(Activity.java:4465)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.os.Looper.loop(Looper.java:137)
05-28 12:22:49.995: E/AndroidRuntime(884): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-28 12:22:49.995: E/AndroidRuntime(884): at java.lang.reflect.Method.invokeNative(Native Method)
05-28 12:22:49.995: E/AndroidRuntime(884): at java.lang.reflect.Method.invoke(Method.java:511)
05-28 12:22:49.995: E/AndroidRuntime(884): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-28 12:22:49.995: E/AndroidRuntime(884): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-28 12:22:49.995: E/AndroidRuntime(884): at dalvik.system.NativeStart.main(Native Method)
05-28 12:22:50.146: I/dalvikvm(884): threadid=3: reacting to signal 3
05-28 12:22:50.155: I/dalvikvm(884): Wrote stack traces to ‚/data/anr/traces.txt‘
05-28 12:22:50.525: I/dalvikvm(884): threadid=3: reacting to signal 3
05-28 12:22:50.535: I/dalvikvm(884): Wrote stack traces to ‚/data/anr/traces.txt‘
Re: Stažený příklad vyhazuje výjimku
Tak se mi podařilo najít řešení, a to tady: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17 – ale až to co je napsáno v tom updatu:
If you have references to jars that are not in the ‘libs’ folder, for example if you use ‘classpath variable’, you can resolve the NoClassDefFoundError issue with the new ADT 17 by exporting the references.
To export the references: simply go to “Properties > Java Build Path > Order and Export”, and check all the references you want exported.
onDestroy()
Ahoj na hardwarove „back button“ aplikace spadne…
v metodě onDestroy() chybí „super.onDestroy();“