Fråga: Apputveckling, förstår inget

Diskussion i 'Applikationsutveckling' startad av DeniceML, 29 sept 2020.

  1. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER

    Hej,

    Jag har börjat en kurs inom apputveckling och känner att jag behöver hjälp inom i stort sett det mesta. Då kursen nyligen startat så är det väldigt grundläggande men jag känner att jag inte hänger med, när jag inte hänger med blir jag stressad, blir jag stressad hänger jag ännu mindre med och det blir en väldigt ond spiral med många breakdowns...

    Jag undrar nu om det finns någon som kan hjälpa med någon slags ordlista eller bara allmänt förklara hur man vet att man ska skriva koden på ett visst sätt. (Och då syftar jag inte på developer sidan osv. utan förklara på svenska på typ en fem-årings nivå. Basic, basic, basic.) Känns som att överallt jag läser så ska jag redan veta en hel del, även fast jag fått höra att jag inte behöver det...
    Ex. på frågor. Vad är en @id, vad är skillnaden på @id och @+id? Varför upprepas saker i koden ex. TextView textView = blablabla? Hur vet jag vad jag behöver och hur vet jag hur jag ska kalla på dom/ vad dom heter i kodvärlden? Hur vet jag hur jag ska börja med koden?

    Ja, som ni ser är en hel del oklart... Tanken är väl att det ska lossna när jag väl hänger med men i den frustrationen jag känner atm så står allt still..
    Tacksam för all hjälp!
     
  2. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Sitter inte på någon ordlista själv så svarar bara på exempelfrågorna.

    Tar ett exempel med enbart en textview.

    Om du vill sätta texten dynamiskt/programmatiskt behöver du en referens till textViewn, det får du genom att sätta ett id på den.

    Med "@id/ettNamn" i din xml så refererar du till ett id som måste redan ha blivit skapat och måste finnas i appens R-fil (R-filen kan man väl se som appens uppslagsverk, där finns färger, id etc)
    Med "@+id" så skapas inlägget i appens R-fil.

    Ska försöka med ett kort exempel, använd "@+id" för android:id och använd "@id" om en annan vy ska referera till den första vy.

    Kod:
    <RelativeLayout> 
        <TextView
            android:id="@+id/minTitel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <ImageView
            android:id="@+id/minBild"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/minTitel" />
    </RelativeLayout>
    
    Notera hur ImageViewn har en layout_below där enbart "@id" används.


    Upprepas och upprepas.
    TextView textview = ... det första TextView där (gissar att det är java) säger bara vilken typ objektet har och det andra är namnet på variabeln. Det kan lika gärna skrivas "TextView jagHittarPaNagotEget"
    Eller i kotlins värld. "jagHittarPaNagotEget: TextView"

    Man lär sig med tiden alla basic object, TextView, ImageView, Button skulle jag nog säga är de vanligaste. Det som kanske blir lite mer avancerat är de olika vygrupperna/viewGroups som styr hur du kan lägga ut objekten på skärmen (LinearLayout, RelativeLayout, ConstraintLayout).
     
    Last edited: 29 sept 2020
    RuffyMan, bernard och DeniceML gillar detta.
  3. Baggen

    Baggen Youth Droid Medlem

    Blev medlem:
    17 sept 2020
    Inlägg:
    207
    Mottagna gillanden:
    105
    Googla och kolla youtube videos. Dom kan vara väldigt pedagogiska och lärorika. Jag har lärt mig enormt mycket därifrån. Det är bästa verktyget som programmerare.

    TextView textView menas med att textView är en instans, alltså ett objekt av klassen TextView. Du kan byta namn på textView till hej123 eller vad som helst. Men man brukar ha ett namn som representerar vad det är.
     
    bernard gillar detta.
  4. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 350
    Mottagna gillanden:
    831
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    Försök dela upp problemet i mindre delar och inte tänka på allt på samma gång för då blir det lätt väldigt mycket och snurrigt.

    Om du programmerar i Java så hitta någon webbsida, onlinekurs eller bok med Java för nybörjare och gör några exempelprogram så att du förstår grunderna i språket med klasser, objekt, instanser, variabler och kontrollstrukturer.
    Det behöver inte vara Androidspecifikt.

    XML-filer används som resurser som du använder för att definiera layouter, värden av olika slag etc. Det är Androidspecifikt och det finns färdiga metoder och klasser för att hämta data från filerna. Där får man läsa på för varje del hur det fungerar.

    Googla och använd dokumentationen på Android Developers. Det är en tröskel att komma över, men till slut så lossnar det.
    Här står det hur @+id fungerar: Layouts  |  Android Developers
    "The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file)."
    R.java är en fil som innehåller alla dina resurser så att du kan komma åt dem från Java-koden. Det skulle vara jobbigt att hantera det själv så det ordnas åt dig av utvecklingsmiljön.
     
    bernard och Zooklubba gillar detta.
  5. Leo83

    Leo83 Android Apprentice Medlem

    Blev medlem:
    5 jan 2012
    Inlägg:
    4 813
    Mottagna gillanden:
    4 886

    MINA ENHETER

    Gällande @id/@+id

    Difference between "@id/" and "@+id/" in Android

    Gällande textview
    TextView  |  Android Developers

    Nu har jag aldrig programmerat appar så har inte så bra koll på just det men när det kommer till programmering generellt så brukar det ta ett tag att komma in i det... Jag tror alla kan lära sig att programmera men alla kan inte bli en bra programmerare.

    Jag förmodar att du aldrig programmerat tidigare, det brukar nämligen vara hyfsat lätt att komma in i ett nytt språk då tanken ofta är den samma med vissa undantag. Vilket innebär att har man programmerat tidigare behöver man bara lära sig det nya språkets syntax och så är man mer eller mindre igång. Självklart har varje språk sina egna speciella egenskaper och unika typer men det är sådan som ofta är en googling bort. På tal om Google så är det bästa sättet att söka efter exempel på sådant man vill göra, det finns alltid någon som har stött på samma problem tidigare och det bästa sättet att lära sig och göra som kod mer effektiv är att titta på hur andra har gjort.

    Java är ett objektorienterad språk, vilket betyder att du skapar objekt som i sin tur kan ha olika egenskaper eller attribut som det kallas. För att skapa ett objekt måste det deklareras.

    Tex säg att det finns objekts typ som heter sköldpadda. Objekt sköldpadda kan sen ha en massa attribut som till exempel Namn, Svans, Hastighet osv.

    Nu var det ett tag sen man programmerade java men säg att du vill deklarera ett objekt /variabel som är av typen integer dvs ett tal

    Syntax för detta är:
    <typ><variabel namn> = <värde>;

    I koden:
    int i = 3;

    På svenska blir det skapa en integer (int) med namn (i) och värde (3)

    Ett annat exempel
    int x = 1;
    int y = 2;

    int z = x+y

    Skapa x med värde 1
    Skapa y med värde 2
    Skapa z med summan av värde x och y

    Ytterligare ett exempel är
    String Namn = "Kalle";

    Skapa Namn med värdet/innehållet Kalle.
    Citationstecknen används för att kompilatorn ska veta att den ska behandla det som som anges som text.

    Det är väl basic
     
    Zooklubba gillar detta.
  6. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER

    @Zooklubba@Zooklubba Okej, tack! Det där hjälpte ändå en del!
    Jag tror också att en sak som snurrrar till det för mig är att jag tycker att minTitel ska göra något. eller snarare... nu har ju du då hittat på ett nytt id som heter minTitel. Vart någonstans säger jag vad minTitel är för något?

    Ett annat återkommande problem är att jag inte vet helt hundra vad saker är. Ja vet tyyyyp vad det är men är extremt osäker när jag försöker förklara det..
     
  7. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Ja, i kursen jag läser får vi flera olika videos att kolla på men det klickar tyvärr inte heller. Det känns som sagt att de redan utgår från att man kan mer än vad jag faktiskt gör :( Jag pratar mycket engelska till vardags så har inga problem med det som så, men programmering på engelska är en annan sak.
    Och att försöka kolla på nya videos som inte är kursrelaterade/tipsade av från kursen är också lite ångestfullt för jag vet ju inte om jag kommer förstå efteråt ändå, Istället finns risken att jag lagt "onödig" tid på något och att tiden tickar inför inlämningar blir liksom ett ytterligare stressmoment. :(

    Nu har jag nog förstått vad TextView textView betyder men för mig blir det stopp när du säger termer som instans, objekt och klass. Jag fattar tyyyp, men som sagt det har inte klickat (instans vet jag inte alls). Det är liksom på den nivån. :(
     
  8. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Tack, ja bara att posta frågorna här kändes som en sak mindre att tänka på vilket underlättade lite. Kurslitteraturen ska vara för nybörjare men det känns inte så.. Och när vi har inlämning typ varannan vecka så känner jag tyvärr inte att tiden finns att sätta sig med annan litteratur, kursen ska vara på 25% men jag lägger på riktigt ner minst 40h i veckan och det känns inte som om det räcker.

    det är flera som sagt att det är svårt i början och att det blir bättre sen och det hoppas jag, jag har failat en liknande kurs förut så vill inte göra om det. Så planen är ju att försöka suck it in, och bara nöta men kan nog komma att bli många frågor i det här forumet framöver...
     
  9. Baggen

    Baggen Youth Droid Medlem

    Blev medlem:
    17 sept 2020
    Inlägg:
    207
    Mottagna gillanden:
    105
    Lärarna och deras material är inte alltid det mest pedagogiska. Sök på nån video på android studio tutorial som går igenom grunderna. Det jag nämner om instans,object och klass är objekt orienterad programmering. Det kan du läsa mer om du är intresserad och det kommer hjälpa dig förstå bättre. Men kolla bara på någon android studio tutoral guide på youtube. Saker tar tid att lära sig, man måste låta det ta tid också.
     
  10. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Hej! Och tack för din tydlighet!
    Jag har programmerat ytterst lite tidigare men då i C# och då gick vi igenom liknande exempel som det du ger. Så det förstår jag ändå, men i den här kursen så gås inte sånt igenom (inte så konkret och tydligt iaf/ att jag inte hittat det...?)

    För jag förstår när det detaljeras på det sättet som du skriver, men i de koderna som jag får exempel på i hemsidor/videoklipp/ länkar osv. så tycker jag inte att det är så tydligt detaljerat, eller att jag då uppenbarligen inte förstår hur det ska byggas upp.
    Kan nog inte ge dig något konkret exempel just nu eftersom jag inte vet om den delen av koden would make sence to you eller om det bara är en del av en kod som inte passar out of context liksom.

    Eller så kanske det klickar lite just nu när jag fått lite mer förståelse för ex. @+id.
    Ber om ursäkt för rörigt, det är minst lika rörigt hos mig.
     
  11. Leo83

    Leo83 Android Apprentice Medlem

    Blev medlem:
    5 jan 2012
    Inlägg:
    4 813
    Mottagna gillanden:
    4 886

    MINA ENHETER

    Det mesta går att tyda och ofta kan man googla på kommandona eller klassnamnen som skrivs i koden för att bilda sig en uppfattning om vad som kallas i koden.

    Många kommandon/operander finns inbyggda i biblioteket som används och då är det bara att leta upp vad dem gör.

    Klistra för all del in kod, någon borde kunna svara på vad den gör
     
    DeniceML gillar detta.
  12. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Forsätter på minTitel-exemplet.

    Sedan i din aktivitet (eller liknande) skriver du följande:
    Kod:
    TextView nagotNamn = (TextView) findViewById(R.id.minTitel)
    nagotNamn.setText("Hejsan världen!")
    
    (Läs rad för rad, från höger typ)
    Iom du skrev "@+id/minTitel" finns nu minTitel inuti R.java och du hämtar referensen dit mha R.id.minTitel.
    findViewById är en funktion för vyer där du mha ett id hämtar ut vyn du vill ha.
    Objektet som hämtas kommer vara av typen View - Vi vet dock om att minTitel är en TextView så vi castar den till TextView mha (TextView)

    Som tidigare exempel kan ditt objekt heta vad som helst och nu döpte jag det till nagotNamn, nu är det en TextView och på det objektet kan man t.ex anropa setText() som sätter texten som visas.
     
  13. RuffyMan

    RuffyMan Testpilot: Huawei P40 Medlem

    Blev medlem:
    2 jun 2010
    Inlägg:
    1 327
    Mottagna gillanden:
    909
    Telefon:
    13 Pro Max & Samsung Note 20 Ultra

    MINA ENHETER

    Telefon:
    13 Pro Max & Samsung Note 20 Ultra
    Är på iPaden nu så skriver lite kort och snabbt bara, låt oss säga att vi har olika delar vi vill nå.

    t.ex har vi Knapp, Textruta och sen kanske Ikon.

    Ta Swedroid t.ex, vi har 3 knappar för att posta inlägg, ladda upp fil m.m.

    Då måste vi skapa 3 knappar, dvs Knapp postreply, i detta fall kanske man vill skapa att knappen heter nånting med knapp för att lätt känna igen att vi kallar på denna knapp.

    Så för exempel,

    Knapp knappSvara = Ny Knapp

    För att nå denna knapp skriver vi alltid in knappSvara, då når vi knappen vi skapade ovanför och kan ändra egenskaper osv.

    vet inte om du hänger med min förklaringen men försökte förklara så basic jag kunde :teeth:
     
  14. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Okej, känner att jag suttit lite länge med detta nu men tror jag förstår vad du menar! Jag kommer nog starta en tråd med just mina problem så kommer det bli ännu mer tydligt för mig. Tack för all hjälp!
     
  15. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Hmm.. betyder detta att knappSvara kommer få namnet Ny Knapp på knappen? (Precis som det kan stå ON på vissa knappar) Eller vad gör just biten Ny Knapp för något? Eller används det för alla tre knappar?
     
  16. RuffyMan

    RuffyMan Testpilot: Huawei P40 Medlem

    Blev medlem:
    2 jun 2010
    Inlägg:
    1 327
    Mottagna gillanden:
    909
    Telefon:
    13 Pro Max & Samsung Note 20 Ultra

    MINA ENHETER

    Telefon:
    13 Pro Max & Samsung Note 20 Ultra
    Tex såhär

    Typ namntyp = ny typ
    Knapp knapp1 = ny Knapp

    Vi förklarar liksom att knapp1 är en knapp och för att skapa en knapp måste man skapa en ny knapp, därav = ny Knapp

    I detta fall vill vi skapa tre knappar för swedroid, då skulle det bli

    Knapp knapp1 = ny knapp() ;
    Knapp knapp2 = ny knapp() ;

    Och sen tredje knappen, anledning till att det är olika namn, dvs knapp1 och knapp2 är för att känna igen vilken knapp vi vill kalla på.

    I detta fall har vi skapat 2 knappar ovanför, det är av samma typ dvs Knapp men båda kan ha olika egenskaper, dvs

    Knapp1.color = blue
    Knapp2.color = black

    Därför skriver man TextView textView1 som du skrev tidigare, man skapar liksom en ny textView och skriver in textView1 i namnet för att enkelt känna igen att det är textview.

    Tex såhär, om du endast skapar

    Knapp knapp1 = ny knapp()

    Då har du bara en knapp, om du tex skriver

    knapp1.color = blue
    knapp1.color = black

    Då byts färgen till svart och vad händer med blå då?? Jo vi har ju bara en knapp, därför behövs en till knapp av samma typ Knapp. Då skapar du liksom knapp2 = ny Knapp

    Då kan du skriva

    knapp1.color = blue
    knapp2.color = black

    Då har du liksom två likadana men självständiga knappar som kan ha olika text, färg m.m men av samma typ "Knapp"

    Hänger du med?
     
    Leo83 gillar detta.
  17. DeniceML

    DeniceML Baby Droid Medlem

    Blev medlem:
    28 sept 2020
    Inlägg:
    23
    Mottagna gillanden:
    2

    MINA ENHETER


    Ja, nu klickade det bättre! Det där kändes mer som de grunderna jag lärde mig i C#. Vilket för mig är mycket tydligare. Tack!
     
    RuffyMan gillar detta.
  18. RuffyMan

    RuffyMan Testpilot: Huawei P40 Medlem

    Blev medlem:
    2 jun 2010
    Inlägg:
    1 327
    Mottagna gillanden:
    909
    Telefon:
    13 Pro Max & Samsung Note 20 Ultra

    MINA ENHETER

    Telefon:
    13 Pro Max & Samsung Note 20 Ultra
    Ja detta är något man bara måste sätta sig in och upprepa, experimentera och sen klickar det. Ge inte upp!!
     
    Leo83, Heleg och DeniceML gillar detta.