Forum » Programiranje » [Android]Vprasanje glede GUI ter pripadajoce XML datoteke
[Android]Vprasanje glede GUI ter pripadajoce XML datoteke
KernelPanic ::
Spostovani!
Zacel sem se uciti programiranja v Androidu in me nekaj zanima: Kakor razumem clanke na netu, ima vsaka GUI forma v Androidu svojo XML reprezentacijo, s katero lahko "handcode" kreiramo GUI od Activity. Jaz bi rad naredil Tabbed Activity (nekako tak izgled programa, kot je Dialer na telefonih z Android OS), vendar mi to nikakor ne uspe. Torej, vprasanje 1:
Kaj hudica v xml datoteki pomeni "android:id=”@+id/my_tabhost", oziroma, kje poljuben id vezem na GUI komponento? Aja, uporabljam Eclipse IDE.
Lp,
M.
Zacel sem se uciti programiranja v Androidu in me nekaj zanima: Kakor razumem clanke na netu, ima vsaka GUI forma v Androidu svojo XML reprezentacijo, s katero lahko "handcode" kreiramo GUI od Activity. Jaz bi rad naredil Tabbed Activity (nekako tak izgled programa, kot je Dialer na telefonih z Android OS), vendar mi to nikakor ne uspe. Torej, vprasanje 1:
Kaj hudica v xml datoteki pomeni "android:id=”@+id/my_tabhost", oziroma, kje poljuben id vezem na GUI komponento? Aja, uporabljam Eclipse IDE.
Lp,
M.
- spremenil: KernelPanic ()
KernelPanic ::
Izgleda, da je nekaj narobe z Eclipse, namrec, ko bi rad oblikoval (v graficnem nacinu) Activity, dobim v Error Log sledece:
eclipse.buildId=M20120208-0800Mogoce pozna kdo resitev za ta bug?
java.version=1.7.0_03
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments: -os win32 -ws win32 -arch x86_64
Error
Sun Mar 25 10:13:37 CEST 2012
main.xml: TabHost requires a TabWidget with id "android:id/tabs".
com.android.layoutlib.bridge.impl.RenderSessionImpl$PostInflateException: TabHost requires a TabWidget with id "android:id/tabs".
at com.android.layoutlib.bridge.impl.RenderSessionImpl.setupTabHost(RenderSessionImpl.java:1192)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1097)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1175)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:332)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:324)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1361)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1115)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ConfigListener.onThemeChange(GraphicalEditorPart.java:533)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.onThemeChange(ConfigurationComposite.java:2277)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.access$10(ConfigurationComposite.java:2265)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite$8.widgetSelected(ConfigurationComposite.java:526)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Mavrik ::
Saj ti zelo jasno piše:
Če delaš s TabHost (kar ti močno odsvetujem, saj se ga več ne podpira) rabiš znotraj TabWidget z IDjem "android:id/tabs"
Drugače pa ko imaš vprašanja tipa "Kaj hudiča pomeni -nekaj-?" je tvoja prva pot na developers.android.com, recimo razlaga za tvoje vprašanje.
TabHost requires a TabWidget with id "android:id/tabs".
Če delaš s TabHost (kar ti močno odsvetujem, saj se ga več ne podpira) rabiš znotraj TabWidget z IDjem "android:id/tabs"
Drugače pa ko imaš vprašanja tipa "Kaj hudiča pomeni -nekaj-?" je tvoja prva pot na developers.android.com, recimo razlaga za tvoje vprašanje.
The truth is rarely pure and never simple.
KernelPanic ::
Saj ti zelo jasno piše:Ma to vem, sprasujem glede bug-a v eclipsu, saj ne morem graficno oblikovati GUIja, to je prava napaka, ne pa moja koda!
TabHost requires a TabWidget with id "android:id/tabs".
Če delaš s TabHost (kar ti močno odsvetujem, saj se ga več ne podpira) rabiš znotraj TabWidget z IDjem "android:id/tabs"
Drugače pa ko imaš vprašanja tipa "Kaj hudiča pomeni -nekaj-?" je tvoja prva pot na developers.android.com, recimo razlaga za tvoje vprašanje.
Mavrik ::
Kot sem ti rekel - TabHost je deprecated, se ga naj ne bi uporabljajo in ga zato tudi GUI editor ne podpira.
Itak se pa moraš naučiti ročno delati gui z XML, grafični editor ni dovolj dober za večino stvari.
Itak se pa moraš naučiti ročno delati gui z XML, grafični editor ni dovolj dober za večino stvari.
The truth is rarely pure and never simple.
icurk ::
Kot še eden začetnik v Android programiranju me zanima s čim nadomestimo TabHost, glede na to da pravite da se ga naj nebi več uporabljajo.
Mavrik ::
Če nisi opazil uporabljajo vse nove aplikacije (Play Store, YouTube, Boid for Android, etc.) namesto tega ViewPager. Nekaj pomoči še dobiš v ABS knjižnici.
Tabi so izumrli iz designa aplikacij že nekje okoli verzije 2.0.
Tabi so izumrli iz designa aplikacij že nekje okoli verzije 2.0.
The truth is rarely pure and never simple.
KernelPanic ::
Kot sem ti rekel - TabHost je deprecated, se ga naj ne bi uporabljajo in ga zato tudi GUI editor ne podpira.Ok, hvala, s tem se popolnoma strinjam, ampak, daj mi samo se prosim vsaj namigni, kje se v kodi poveze id z xml id identifikatorjem za dolcoen gui.
Itak se pa moraš naučiti ročno delati gui z XML, grafični editor ni dovolj dober za večino stvari.
Mavrik ::
Android SDK ti zgenerira razred "R.java" v mapi "gen", ki ima reference do id-jev, ki si jih ustvaril v XMLjih.
torej:
android:id="@+id/moj_nekaj" dobiš tako da dostopiš do R.id.moj_nekaj
torej:
android:id="@+id/moj_nekaj" dobiš tako da dostopiš do R.id.moj_nekaj
The truth is rarely pure and never simple.
KernelPanic ::
KernelPanic ::
KernelPanic je izjavil:
Ups, moja napaka! Stvar se prevede, nekaj drugega je bilo narobe, pardon. Najlepsa hvala za pomoc, vendar bi te/vas sedaj vprasal se nekaj. Torej TabHost gre ven, to sprejmem. Kako/s cim pa naj potem naredim mainActivity, da bo uporabnik glede na izbiro tipa iskanja lahko iskal v sqlite tabeli po:Android SDK ti zgenerira razred "R.java" v mapi "gen", ki ima reference do id-jev, ki si jih ustvaril v XMLjih.Tole mi je cudno. Ce dam "@+id/nekaj", je to nov id, vendar se mi koda ne prevede.
torej:
android:id="@+id/moj_nekaj" dobiš tako da dostopiš do R.id.moj_nekaj
- activityDirectSearch bo uporabnik iskal po stolpcu ime iz tabele. Namrec, za ta tip iskanja bi naredil table GUI komponento, v kateri bi bili podatki iz stolpca "name" iz tabele. To je naravnano za napredne uporabnike, ki bodo iz imena ze priblizno vedeli, kaj bodo uporabili.
- activityParamSearch: v tem activity-ju bo lahko uporabnik iskal podatke v tabeli z pomocjo vnosa zelenih vrednosti v polja in s temi vrednostmi bo omenjena activity iskala podatke po bazi.
Zaradi (za zacetek) teh dveh moznosti sem hotel narediti razred activityMain, ki bi vseboval dva taba: Direct Search in Parametrical Search. Ker si rekel, naj se izognem TabHostu, mi lahko prosim predlagas, kateri GUI element naj uporabim, oz., s katerimi elementi naj ta task resim?
Lp,
M.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Eclipse in windows 8Oddelek: Pomoč in nasveti | 1225 (978) | mihibo5 |
» | [android] crashOddelek: Programiranje | 1337 (1146) | messi |
» | Ne zazna R.class -androidOddelek: Programiranje | 1292 (1130) | Marat |
» | java datapool - derbyOddelek: Programiranje | 2318 (2167) | jlpktnst |
» | tomcat in datasourceOddelek: Programiranje | 1987 (1744) | infiniteLoop |