
![]() |
|
|
#1 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Jag sitter i Eclipse och har slitit mitt hår i ett par timmar nu. Mest för att jag tror det är ett väldigt enkelt problem. Appen ser ut som följande: Användare trycker på en knapp, upp kommer en dialogruta med ett "EditText" fält och en "Ok" knapp. Jag vill att det användaren skriver i fältet ska skickas till en INT variabel. Först körde jag helt enkelt det här: Min_INT_Variabel = R.id.mitt_edit_text_fält och värdet blev fullständigt galet. Sen försökte jag med allehanda Integer.parseInt och valueOf, för att inte tala om getText().ToString() och det kraschar bara min app ständigt och jämnt. Som jag förstått det från ca. 20 olika sidor på nätet, så handlar det om att värden i dialogrutor är på separerade från huvudaktiviteten? Det andra problemet, är att jag kan bara öppna den här dialogrutan en gång. Den "byggs" så att säga i min onClickListener, och det vore skönt att slippa skriva en funktion för den, kan jag på ett enkelt sätt riva dialogrutan när användaren trycker "ok" så den kan byggas upp på nytt nästa gång användaren trycker? Logcat om dialogproblemet: "java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first." Tacksam för all hjälp jag kan få, detta driver mig till vansinne!
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z Senast redigerad av crazyrobban den 2012-04-01 klockan 13:01. |
|
|
|
|
|
#2 - (Permalink) |
|
Senior Droid
Reg.datum: maj 2010
Inlägg: 1 855
Tack: 24
Tackad 119 ggr i 98 inlägg
|
R.id.mitt_edit_text_fält är id för editboxen, inte innehållet i den. Du behöver leta upp editboxen med findView(R.id.mitt_edit_text_fält) eller något sånt. Och sedan kan du fråga den om dess innehåll. Du får då en sträng och den behöver du sedan göra om till heltal med parseInt.
__________________
Har stängt av att visa både signatur och avatar eftersom de mest används störande och förvirrande. Tycker jag. |
|
|
|
|
|
#3 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Jag förstår problematiken lite bättre nu efter ytterligare en timmes hårslit.
Säg att jag deklarerar mitt edit text fält globalt. EditText fält; Följer sedan upp i dialogrutans kod med: fält = (EditText) findViewById(R.id.edit_text_fält); För att sedan göra följande: String lol = fält.getText().toString(); Då kraschar appen. Det är definitivt vid getText().toString skedet. Någon som har någon aning? Logcat infon är inte mycket till hjälp. NullPointerException.
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z |
|
|
|
|
|
#4 - (Permalink) |
|
Kid Droid
Reg.datum: dec 2010
Ort: Göteborg
Inlägg: 112
Operatör: Tele2 Telefon: Google Galaxy Nexus ROM: Original Tablet: Asus Transformer Infinity Tack: 13
Tackad 12 ggr i 11 inlägg
|
NullPointerException, alltså är din EditText (fält) == null. Men det står nog i LogCat exakt vilken komponent som är null.
Kan det ha att göra med att du använder bokstaven ä? eller gör du bara det här på forumet? Även om inte det är felet så rekommenderar jag att bara använda engelska alfabetet och skippa "å ä ö" i din kod. Koden ser korrekt ut annars.. Kod:
EditText field = (EditText) findViewById(R.id.textfield); String data = field.getText().toString(); |
|
|
|
|
|
#5 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
:-/
Inga å,ä,ö. Det var bara för att det skulle vara lite trevligare här på forumet. Och getText delen är tyvärr efter finViewById. Tack för förslagen dock! 04-01 21:18:44.295: E/AndroidRuntime(28248): java.lang.NullPointerException 04-01 21:18:44.295: E/AndroidRuntime(28248): at com.lofgren.app-namn.Main$4$1.onClick(Main.java:146) 04-01 21:18:44.295: E/AndroidRuntime(28248): at com.android.internal.app.AlertController$ButtonHan dler.handleMessage(AlertController.java:165)
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z |
|
|
|
|
|
#6 - (Permalink) |
|
Kid Droid
Reg.datum: dec 2010
Ort: Göteborg
Inlägg: 112
Operatör: Tele2 Telefon: Google Galaxy Nexus ROM: Original Tablet: Asus Transformer Infinity Tack: 13
Tackad 12 ggr i 11 inlägg
|
Kan du inte lägga upp din kod så att man kan ta sig en närmare titt? Det är svårt att diagnosera annars
![]() När det gäller dialogrutor så brukar jag själv använda AlertDialog. Kolla exemplet längst ner för hur man kan göra en egen design på dialogen. Visst, det är lite mer kod än med andra dialogrutor men det blir precis som man vill ha det och du bygger upp den varje gång användaren tar fram den. |
|
|
|
|
|
#7 - (Permalink) |
|
Teen Droid
Reg.datum: okt 2009
Ort: Göteborg
Inlägg: 946
Operatör: Tele2 Telefon: Google Nexus 4 ROM: Original Launcher: Default, Nova, Apex Tablet: Nexus 7 & iPad 2 Tack: 21
Tackad 163 ggr i 141 inlägg
|
Vi behöver ha lite mer kod för att se hur du skapar din dialog.
Kolla här för hur man gör custom dialogs: http://developer.android.com/guide/t...l#CustomDialog Hämta en referens till (i exemplet) texten i dialogen med: TextView text = (TextView) dialog.findViewById(R.id.text); Dvs. från den aktivitet som startar dialogen så går du via det instansierade Dialog-objektet och hämtar det du vill ha. |
|
|
|
|
|
#8 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Nu är koden hemma och jag är på jobbet, men dialogrutan har jag byggt utifrån APIDemos delen för Custom Dialogs.
Alltså, Vid tryck på en knapp { bygg dialogruta --{ gör det ena och det tredje när "ok" knappen trycks på i dialogrutan ------{ gör något annat ------} --} visa dialogruta } Om jag inte minns fel. Jag hade säkert kunna bygga det betydligt snyggare genom att hantera koden för dialogrutan i ett tidigare skede, och bara anropa det vid knapptryckningen. Jag är fortfarande mega-noob på java programmering. Jag laddar upp koden i eftermiddag. Tack för all hjälp!
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z |
|
|
|
|
|
#9 - (Permalink) |
|
Android Master
Reg.datum: maj 2010
Inlägg: 5 922
Operatör: Telia Telefon: Google Galaxy Nexus ROM: rasbeanjelly 4.2.1 Tack: 68
Tackad 408 ggr i 275 inlägg
|
Jag är rätt van vid att jobba med CustomDialogs iom min Anteckningsapp samt kalori-appen, så, om du bara visar oss den snuttkoden med dialogen, så kan jag nog hjälpa till
__________________
![]() Simple Notes Kalori Upptäck fascinationen av Kpop @ http://www.youtube.com/user/SweKpopSubs |
|
|
|
|
|
#10 - (Permalink) |
|
Kid Droid
Reg.datum: mar 2010
Inlägg: 151
Tack: 2
Tackad 4 ggr i 4 inlägg
|
Du har satt vilken layout dialogen ska använda? Annars kommer findViewById retunera null. Typ setContentView(R.layout.mydialog); i onCreate eller i konstruktorn eller nån annan stans innan du försöker hämta ut editfältet?
|
|
|
|
|
|
#11 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Kod kommer efter jobbet.
![]() Layouten är definierad, annars hade jag ju inte ens sett något i dialogrutan antar jag. Jag har flyttat runt den lite grann i koden för att se om det löste problemet, men oavsett om jag haft den definierad globalt, i onCreate eller till och med i onClickListener delen så har det inte gjort någon skillnad. Jag är på en så pass låg nivå, så jag är inte ens helt hundra på vad jag menar när jag säger globalt. Jag antar att det är när något är definierat innan onCreate och liksom, precis i början av aktiviteten?
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z |
|
|
|
|
|
#12 - (Permalink) |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Ok, här är min main.java fil. :-)
Bortplockad be gentle...
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z Senast redigerad av crazyrobban den 2012-04-03 klockan 18:05. |
|
|
|
|
|
#13 - (Permalink) |
|
Teen Droid
Reg.datum: okt 2009
Ort: Göteborg
Inlägg: 946
Operatör: Tele2 Telefon: Google Nexus 4 ROM: Original Launcher: Default, Nova, Apex Tablet: Nexus 7 & iPad 2 Tack: 21
Tackad 163 ggr i 141 inlägg
|
Du har lagt in en null-kontroll nu va? Då slipper du NullPointerExceptions antar jag, men du får inget värde.
Testa att istället för: pris = (EditText) findViewById(R.id.pris_edit); göra: pris = (EditText) dialog.findViewById(R.id.pris_edit); Kolla med hjälp av debuggern att du får ut rätt objekt till pris. |
|
|
|
|
|
#14 - (Permalink) | |
|
Youth Droid
Reg.datum: dec 2009
Ort: Göteborg
Inlägg: 537
Operatör: Telia Telefon: Sony Xperia Z ROM: Stock (4.1.2) Launcher: Nova Launcher Prime Tablet: Nexus 7 och Nexus 10 Tack: 39
Tackad 30 ggr i 23 inlägg
|
Citat:
Jag får felmeddelandet: "the method findViewById(int) is undefined for the type dialogInterface" och Eclipse ger mig suspekta förslag. Efter två förslag så slutade den ge felmeddelanden och istället så koden ut enligt följande: pris = (EditText) ((EditText) dialog).findViewById(R.id.pris_edit); Och det verkar ju vara fullständigt galet? För övrigt ska det nämnas att trots min null kontroll, så kraschar ändå appen.
__________________
Android Timeline HTC Hero, HTC Desire, HTC Desire HD, LG Optimus 3D, HTC Sensation, Samsung Galaxy Note, HTC One X, Xperia Z |
|
|
|
|
|
|
#15 - (Permalink) | |
|
Teen Droid
Reg.datum: okt 2009
Ort: Göteborg
Inlägg: 946
Operatör: Tele2 Telefon: Google Nexus 4 ROM: Original Launcher: Default, Nova, Apex Tablet: Nexus 7 & iPad 2 Tack: 21
Tackad 163 ggr i 141 inlägg
|
Citat:
Testa att casta dialog till en AlertDialog och sedan hämta ut din vy: AlertDialog alertDlg = (AlertDialog)dialog; pris = (EditText) alertDlg.findViewById(R.id.pris_edit); |
|
|
|
|
![]() |
| Ämnesverktyg | Sök i det här ämnet |
| Visningsalternativ | |
|
|