[ADV] Online Java Academy Afl. 2 - powered by Capgemini Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • zeef
  • Registratie: Januari 2000
  • Laatst online: 08:48
Mede-auteurs:
  • Prx
  • Registratie: September 2002
  • Laatst online: 06-07 16:49

Prx

  • Dipsausje
  • Registratie: Februari 2006
  • Niet online

Dipsausje

Afbeeldingslocatie: http://static.tweakers.net/ext/f/KUjBJOa8Fz9Uf3IZs9MGbTzo/full.jpg

Wat Java is, hoeven we je hier op Tweakers niet te vertellen en dat het een van de meest populaire programmeertalen is, ook niet. Veel van onze bezoekers staan aan het begin van hun carrière, hebben al wel enige programmeerkennis maar willen -als ze dat nog niet kunnen- ook graag in Java kunnen programmeren.

Herken je je in het bovenstaande, dan hebben we goed nieuws voor je. Tweakers en Capgemini hebben de handen ineen geslagen en speciaal voor de beginnende Java-programmeur een serie tutorials ontwikkeld. In twaalf afleveringen nemen we je graag mee in de wereld van Java en leren we je de basics van het ontwikkelen van een app in Java.

We beginnen (relatief) eenvoudig en voeren het niveau gaandeweg wat op. Iedere week komen er twee of drie nieuwe afleveringen online. Aan het einde van de tutorialreeks ben je in staat om zelf een app te ontwikkelen in Java. Bekijk op de actiepagina het overzicht van de tutorials.

De nieuwe tutorial bouwt telkens voort op de vorige tutorial. Mocht je al wat meer ervaring hebben, dan kun je ook tussentijds instappen. Bij iedere tutorial hebben we een forumtopic geopend. In dat topic kun je terecht met vragen en opmerkingen en helpen medewerkers van Capgemini (Dipsausje en Prx), Tweakers en vast ook andere users je graag verder.

Aan het einde van de reeks dagen we je graag uit om een eigen app te ontwikkelen en in te sturen. Degene met de beste* inzending belonen we met een Java Certified Associate Track-opleiding, ter waarde van € 7.500! Inzenden kan t/m 12 juli via e-mailadres: onlinejavaacademy@tweakers.net.


Tutorial 2: Layouts en eerste interactie
Als vervolg op het inrichten van de ontwikkelomgeving en het schrijven van de eerste regels code, gaan we nu verder met de layout. Leer in deze tutorial om met behulp van Android layouts een scherm te tonen en code uit te voeren na het drukken op een button. Gaat dit goed, waar loop je tegenaan? Laat het hier weten en we helpen je graag verder.

Publicatieschema
tutorial 1 Development environment & Hello world topic 19-5-2015
tutorial 2 Layouts en eerste interactie topic21-5-2015
tutorial 3 Views en navigatie topic26-5-2015
tutorial 4 Actionbar en Searchview topic28-5-2015
tutorial 5 Debuggen, loggen en breakpointstopic 2-6-2015
tutorial 6 Externe libraries en het laden van plaatjestopic 4-6-2015
tutorial 7 Data van API ophalen en weergeven topic9-6-2015
tutorial 8 Dynamisch layout detailpagina topic11-6-2015
tutorial 9 Refresh in menu en dynamische titels topic16-6-2015
tutorial 10 Notificaties topic18-6-2015
tutorial 11 App voorbereiden op Storetopic 23-6-2015
tutorial 12 Recap en tips voor jouw eigen app topic25-6-2015
Inzenden tot en met:12-7-2015

De links werken vanaf 09:00 uur op de genoemde publicatiedatum.

[ Voor 45% gewijzigd door zeef op 03-06-2015 11:28 ]


Acties:
  • 0 Henk 'm!

  • Ask!
  • Registratie: Februari 2015
  • Laatst online: 07-05 20:37
Ik zie veel comments voorbij komen dat het allemaal te snel gaat, en dat het wat beter uitgelegd moet worden.
Ik vind juist dat als je basis kennis hebt van programmeren ( Java ), dat het helemaal niet te snel gaat. En dat ze je juist uitdagen om zelf veel op te zoeken. Bijvoorbeeld wat is een OnClickViewListener methode, wat is een LinearLayout/RelativeLayout, en kun je de view ook drag en droppen? Door zelf dit uit te zoeken, leer je alleen maar meer.

Misschien wel een tip, in het tweede filmpje zie je een hardcoded string in de XML ("Hello Tweakers"). Dit valt voor mij onder bad practice, en moet eigenlijk in de global String XML staan. Zoals het hoort :)

Verder erg goed filmpje waarin de basis goed uitgelegd wordt!

Acties:
  • 0 Henk 'm!

  • Ryflex
  • Registratie: Januari 2012
  • Laatst online: 26-06 21:31
Uhm de links onder de tutorial geven een 404?

Acties:
  • 0 Henk 'm!

  • billygates
  • Registratie: April 2015
  • Laatst online: 04-07 13:36
Bedankt voor de tutorial en alvast voor de komende afl.
Toevallig al een aantal weken aan het puzzelen wat een goedkope manier is om een android app te maken.
In het verleden de software van thegamecreators gebruikt, wat toen nog niet denderend was.

1e filmpje is goed. Niet te snel (je kunt het altijd stil zetten of terug luisteren). Maar het is wel handig als je al C# PHP of C beheerst,ondanks dat java behoorlijk anders is.

Ideaal, het kost niks en je hebt volledig de controle over de broncode en het resultaat op het scherm.

Acties:
  • 0 Henk 'm!

  • Salmon
  • Registratie: Juli 2009
  • Laatst online: 10-06 08:15

Salmon

.NET developer

Waarom een CharSquence doen met gekke parses voor de quotes? Ipv of een string of gewoon gelijk de Toast goed doen, zonder teveel variablelen te gebruiken.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
Button myButton = (Button) findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        CharSequence text = "Hallo Tweaker, de melding werkt na 
        het indrukken van een knop!";
        int duration = Toast.LENGTH_LONG;

        Context context = getApplicationContext();
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
});

Of gewoon:
Java:
1
2
3
4
5
6
7
8
9
Button myButton = (Button) findViewById(R.id.myButton);

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "Hallo Tweaker, de melding werkt na 
        het indrukken van een knop!", Toast.LENGTH_LONG).show();
    }
});


En idd zoals hierboven staat alle losse strings die je in de .xml bestanden gebruikt in de strings.xml zetten tussen de <item></item> tags en in de xml verwijzen naar zoals zoiets:
code:
1
2
3
4
5
6
7
In de strings.xml:
<string name="tweakers_text">Hello Tweakers</string>
In de main_activity.xml:
 <TextView
            android:text="@string/tweakers_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

[ Voor 3% gewijzigd door Salmon op 21-05-2015 13:28 ]


Acties:
  • 0 Henk 'm!

  • O88088
  • Registratie: Februari 2011
  • Laatst online: 08:40
Is het geen goed idee om deze dingen weer op de frontpage te zetten? Je moet nu toevallig weten dat dit speelt óf vaak op de acties pagina komen om te weten dit gedaan wordt. Het lijkt me voor de betrokkenen ook niet fijn als er amper aandacht aan besteed wordt.

Edit: of je moet via het forum hier komen maar ik denk niet dat veel n00bs dat doen.

[ Voor 14% gewijzigd door O88088 op 21-05-2015 16:48 ]


Acties:
  • 0 Henk 'm!

  • HenkDePoema
  • Registratie: Oktober 2005
  • Laatst online: 13:19
Op zich een goed idee, al loopt er volgens mij al een advertentiecampagne via video ads.

Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Ask! schreef op donderdag 21 mei 2015 @ 11:36:
Verder erg goed filmpje waarin de basis goed uitgelegd wordt!
Dat wel, maar basiskennis is wel nodig. De presentator heeft het zonder verdere uitleg over "casten" naar een button, maar een absolute beginner weet niet wat typecasting inhoudt.
billygates schreef op donderdag 21 mei 2015 @ 12:28:
Bedankt voor de tutorial en alvast voor de komende afl.
Toevallig al een aantal weken aan het puzzelen wat een goedkope manier is om een android app te maken.
In het verleden de software van thegamecreators gebruikt, wat toen nog niet denderend was.

1e filmpje is goed. Niet te snel (je kunt het altijd stil zetten of terug luisteren). Maar het is wel handig als je al C# PHP of C beheerst,ondanks dat java behoorlijk anders is.

Ideaal, het kost niks en je hebt volledig de controle over de broncode en het resultaat op het scherm.
Het ideale van Android is dat je gratis kunt starten met ontwikkelen, met prima software. Zelfs registratie is niet nodig, gewoon downloaden :) Ik vraag mij alleen af - en die vraag heb ik in het vorige deel ook al gesteld, helaas zonder reactie - in hoeverre dit ook in de praktijk veel wordt gebruikt: Een Android app geschreven met Android studio kan niet zomaar gecompiled worden voor iOS. Terwijl elk bedrijf dat een serieuze app wil, een app voor beide platforms wil. Wordt in de praktijk niet veel vaker een cross-platform omgeving gebruikt?
Salmon schreef op donderdag 21 mei 2015 @ 12:38:
Waarom een CharSquence doen met gekke parses voor de quotes? Ipv of een string of gewoon gelijk de Toast goed doen, zonder teveel variablelen te gebruiken.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
Button myButton = (Button) findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        CharSequence text = &quot;Hallo Tweaker, de melding werkt na 
        het indrukken van een knop!&quot;;
        int duration = Toast.LENGTH_LONG;

        Context context = getApplicationContext();
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
});

Of gewoon:
Java:
1
2
3
4
5
6
7
8
9
Button myButton = (Button) findViewById(R.id.myButton);

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "Hallo Tweaker, de melding werkt na 
        het indrukken van een knop!", Toast.LENGTH_LONG).show();
    }
});


En idd zoals hierboven staat alle losse strings die je in de .xml bestanden gebruikt in de strings.xml zetten tussen de <item></item> tags en in de xml verwijzen naar zoals zoiets:
code:
1
2
3
4
5
6
7
In de strings.xml:
<string name="tweakers_text">Hello Tweakers</string>
In de main_activity.xml:
 <TextView
            android:text="@string/tweakers_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
Dat &-quote lijkt mij een foutje want dat gaat echt niet werken in Java. Er zal wat mis zijn gegaan met htmlspecialchars bij publicatie van het artikel.

[ Voor 97% gewijzigd door SvMp op 21-05-2015 17:13 ]


Acties:
  • 0 Henk 'm!

  • Vincentio
  • Registratie: Februari 2002
  • Niet online
SvMp schreef op donderdag 21 mei 2015 @ 17:05:

Het ideale van Android is dat je gratis kunt starten met ontwikkelen, met prima software. Zelfs registratie is niet nodig, gewoon downloaden :) Ik vraag mij alleen af - en die vraag heb ik in het vorige deel ook al gesteld, helaas zonder reactie - in hoeverre dit ook in de praktijk veel wordt gebruikt: Een Android app geschreven met Android studio kan niet zomaar gecompiled worden voor iOS. Terwijl elk bedrijf dat een serieuze app wil, een app voor beide platforms wil. Wordt in de praktijk niet veel vaker een cross-platform omgeving gebruikt?
Dat hoeft niet. Zat bedrijven die voor een single platform strategie gekozen hebben en ja daar zitten ook echt grote jongens tussen. En soms ligt het eraan wie je target binnen je bedrijf, dat bepaalde divisies maar 1 platform hebben.

Acties:
  • 0 Henk 'm!

  • Heli0s
  • Registratie: April 2002
  • Laatst online: 06-04 15:07

Heli0s

Liberate tuteme ex inferis

Krijgen jullie ook de medling dat ActionBarActivity deprecated is?

The fear that keeps me going and going and going. Is the same fear that brings me to my knees


Acties:
  • 0 Henk 'm!

  • Vincentio
  • Registratie: Februari 2002
  • Niet online
Heli0s schreef op donderdag 21 mei 2015 @ 20:10:
Krijgen jullie ook de medling dat ActionBarActivity deprecated is?
Dat is het sinds een maandje inderdaad:
https://plus.google.com/+AndroidDevelopers/posts/LNyDnnBYJ8r

Acties:
  • 0 Henk 'm!

Anoniem: 209119

Ondanks dat code kloppen niks voor mij is (visueel ingesteld, ik worstel al met simpel HTML en CSS) vind ik dit zeer interessant een een goed initiatief. Wel jammer dat het niet voor IOS is, maar dat maakt de Mac van Kwee weer goed. ;)

Acties:
  • 0 Henk 'm!

  • Ask!
  • Registratie: Februari 2015
  • Laatst online: 07-05 20:37
SvMp schreef op donderdag 21 mei 2015 @ 17:05:
[...]

Dat wel, maar basiskennis is wel nodig. De presentator heeft het zonder verdere uitleg over "casten" naar een button, maar een absolute beginner weet niet wat typecasting inhoudt.

[...]
Ik ga er van uit dat iedereen die meedoet aan de tutorials, weet wat typecasting is. Dat is niet een heel moeilijk principe, en anders is het zo op te zoeken :)

Acties:
  • 0 Henk 'm!

Anoniem: 674598

Na jarenlang enkel posts van anderen lezen voor deze gelegenheid dan eindelijk een account aangemaakt ;)

On topic: ik heb een redelijke basiskennis van Java. De moeilijkheid zit hem wat mij betreft dan ook niet in de code maar in het snappen hoe de Android frameworks zich gedragen. Daarin geven de video's soms halve informatie. Zo stuit ik er bij de tweede extra challenge op dat bij property animation de setX en setY die door de animatie wordt aangeroepen interfereert met de lineair layout, waardoor objecten zich onvoorspelbaar over het scherm bewegen. Met relative layout is dat geen probleem, maar daar moet je zelf achter komen schijnbaar aangezien het volgens de instructies van de tutorial een linear layout moest zijn.
Ook werkt bij mij de tweening van de animatie niet, button springt gewoon direct naar de andere positie. De duration property heeft geen effect. Iemand enig idee van de oorzaak? :?

Acties:
  • 0 Henk 'm!

  • johan223
  • Registratie: September 2010
  • Laatst online: 31-05 15:59
Beste allemaal,

Laat ik beginnen met aangeven dat ik een absolute beginner ben op het gebied van java of programmeren in het algemeen. ;) maar heb al wel langerd e wens om een er eens wat van te leren en dit leek mij een mooie start! Tweakers (en Capgemini) dank daarvoor!

Nu heb ik een vraag naar aanleiding van de tweede aflevering. Opdracht 1 was om de tekst te veranderen na een druk op een knop. Dat is mij gelukt. Ik heb daar voor mijzelf aan toegevoegd dat ik wilde dat de tekst ook weer terug zou veranderen als je nog een keer zou drukken ook dat is gelukt!

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
        Button Knop1 = (Button) findViewById(R.id.Knop1);
        Knop1.setTag(1);
        Knop1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
                final int status = (Integer) v.getTag();
                if (status == 1) {
                    tekstview1.setText(getString(R.string.tekst2));
                    v.setTag(0);
                } else {
                    tekstview1.setText((getString(R.string.tekst1)));
                    v.setTag(1);
                }

            }
        }); 
 


Nu probeer ik opdracht 2 op eenzelfde manier te doen (1ste keer kleur 1 daarna terug naar zwart) ik heb de volgende code daarvoor in gebruik:

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        Button Knop2 = (Button) findViewById(R.id.Knop2);
        Knop2.setTag(1);
        Knop2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
            final int status = (Integer) v.getTag();
            if (status == 1){
                tekstview1.setTextColor(0xFF0000);
                v.setTag(0);
            } else {
                tekstview1.setTextColor(0x000000);
                v.setTag(1);
            }
        }
        });
 


Echter het enige wat er nu gebeurd als ik op de tweede knop druk is dat de tekst verdwijnt (of wit wordt). als ik op de andere knop druk zie ik nog wel door de lay-out dat de tekst veranderd (gebruik nu linearlayout en eerste tekst is korter dan de tweede tekst waardoor dus de knoppen verschuiven ;) )

Kan iemand mij weer wat op weg helpen?

Aanvulling: de XML van activity_main:

XML: activity main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  
    <TextView
        android:id="@+id/tekstview1"
        android:text="@string/tekst1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/Knop1"
        android:text="@string/Knop1tekst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/Knop2"
        android:text="@string/Knop2tekst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
  


En om het compleet te maken de strings.xml:

XML: Strings
1
2
3
4
5
6
 
    <string name="tekst1">Hallo Tweaker</string>
    <string name="tekst2">Hallo Tweaker 2!</string>
    <string name="action_settings">Settings</string>
    <string name="Knop1tekst">Verander de tekst</string>
    <string name="Knop2tekst">Verander de kleur</string>

[ Voor 17% gewijzigd door johan223 op 22-05-2015 16:37 ]


Acties:
  • 0 Henk 'm!

Anoniem: 674598

johan223, zou je ook je xml kunnen posten?

Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
johan223 schreef op vrijdag 22 mei 2015 @ 14:03:
Beste allemaal,

Laat ik beginnen met aangeven dat ik een absolute beginner ben op het gebied van java of programmeren in het algemeen. ;) maar heb al wel langerd e wens om een er eens wat van te leren en dit leek mij een mooie start! Tweakers (en Capgemini) dank daarvoor!

Nu heb ik een vraag naar aanleiding van de tweede aflevering. Opdracht 1 was om de tekst te veranderen na een druk op een knop. Dat is mij gelukt. Ik heb daar voor mijzelf aan toegevoegd dat ik wilde dat de tekst ook weer terug zou veranderen als je nog een keer zou drukken ook dat is gelukt!

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
        Button Knop1 = (Button) findViewById(R.id.Knop1);
        Knop1.setTag(1);
        Knop1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
                final int status = (Integer) v.getTag();
                if (status == 1) {
                    tekstview1.setText(getString(R.string.tekst2));
                    v.setTag(0);
                } else {
                    tekstview1.setText((getString(R.string.tekst1)));
                    v.setTag(1);
                }

            }
        }); 
 


Nu probeer ik opdracht 2 op eenzelfde manier te doen (1ste keer kleur 1 daarna terug naar zwart) ik heb de volgende code daarvoor in gebruik:

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        Button Knop2 = (Button) findViewById(R.id.Knop2);
        Knop2.setTag(1);
        Knop2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
            final int status = (Integer) v.getTag();
            if (status == 1){
                tekstview1.setTextColor(0xFF0000);
                v.setTag(0);
            } else {
                tekstview1.setTextColor(0x000000);
                v.setTag(1);
            }
        }
        });
 


Echter het enige wat er nu gebeurd als ik op de tweede knop druk is dat de tekst verdwijnt (of wit wordt). als ik op de andere knop druk zie ik nog wel door de lay-out dat de tekst veranderd (gebruik nu linearlayout en eerste tekst is korter dan de tweede tekst waardoor dus de knoppen verschuiven ;) )

Kan iemand mij weer wat op weg helpen?
Voor die keuren: http://stackoverflow.com/...color-of-textview-in-code

getTag/setTag is niet de juiste manier om een tekst of kleur te wisselen. Je zet de waarde van de tag in een variabele en vervolgens zet je weer een waarde in de tag.

Gemakkelijker is een variabele bijhouden en buiten de click-handler declareren.

In voorbeeld 1 zou je kunnen declareren int status=1. In plaats van setTag, geef je status een nieuwe waarde.

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        Button Knop1 = (Button) findViewById(R.id.Knop1);
        int status = 1;
        final TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);

        Knop1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // kan beter buiten de onClick: TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
                // overbodig final int status = (Integer) v.getTag();
                if (status == 1) {
                    tekstview1.setText(getString(R.string.tekst2));
                    status=0;
                } else {
                    tekstview1.setText((getString(R.string.tekst1)));
                    status=1;
                }

            }
        }); 
 



Programmeurs met wat meer ervaring kunnen zelfs vrij gemakkelijk het hele if-statement overbodig maken en deze code heel kort houden. setTag is echter te omslachtig, een variabele kan hier volstaan.

[ Voor 12% gewijzigd door SvMp op 22-05-2015 16:19 ]


Acties:
  • 0 Henk 'm!

  • johan223
  • Registratie: September 2010
  • Laatst online: 31-05 15:59
SvMp schreef op vrijdag 22 mei 2015 @ 16:17:
[...]


Voor die keuren: http://stackoverflow.com/...color-of-textview-in-code

getTag/setTag is niet de juiste manier om een tekst of kleur te wisselen. Je zet de waarde van de tag in een variabele en vervolgens zet je weer een waarde in de tag.

Gemakkelijker is een variabele bijhouden en buiten de click-handler declareren.

In voorbeeld 1 zou je kunnen declareren int status=1. In plaats van setTag, geef je status een nieuwe waarde.

Java: Mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        Button Knop1 = (Button) findViewById(R.id.Knop1);
        int status = 1;
        final TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);

        Knop1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // kan beter buiten de onClick: TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
                // overbodig final int status = (Integer) v.getTag();
                if (status == 1) {
                    tekstview1.setText(getString(R.string.tekst2));
                    status=0;
                } else {
                    tekstview1.setText((getString(R.string.tekst1)));
                    status=1;
                }

            }
        }); 
 



Programmeurs met wat meer ervaring kunnen zelfs vrij gemakkelijk het hele if-statement overbodig maken en deze code heel kort houden. setTag is echter te omslachtig, een variabele kan hier volstaan.
Allereerst bedankt voor de hulp!

Met de kleuren is inmiddels gelukt! 8)
Bij jouw voorbeeld met de variabele krijg ik een foutmelding als ik de code probeer uit te voeren: "error: local variable status is accessed from within inner class; needs to be declared final" en verwijst daarbij naar de 3 keer status bij if en else. Daar loopt hij bij mij nu nog op vast. |:(

Iemand ideeën?

Acties:
  • 0 Henk 'm!

Anoniem: 674598

Bij jouw voorbeeld met de variabele krijg ik een foutmelding als ik de code probeer uit te voeren: "error: local variable status is accessed from within inner class; needs to be declared final" en verwijst daarbij naar de 3 keer status bij if en else. Daar loopt hij bij mij nu nog op vast. |:(

Iemand ideeën?
Als je "int status = 1;" in plaats van aan het begin bij OnCreate intialiseert binnen de inner class is het opgelost:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Button Knop1 = (Button) findViewById(R.id.Knop1);
       
        final TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);

        Knop1.setOnClickListener(new View.OnClickListener() {

int status = 1;
            @Override
            public void onClick(View v) {
                // kan beter buiten de onClick: TextView tekstview1 = (TextView) findViewById(R.id.tekstview1);
                // overbodig final int status = (Integer) v.getTag();
                if (status == 1) {
                    tekstview1.setText(getString(R.string.tekst2));
                    status=0;
                } else {
                    tekstview1.setText((getString(R.string.tekst1)));
                    status=1;
                }

            }
        });

Acties:
  • 0 Henk 'm!

Anoniem: 674598

Iemand enig idee hoe kan kan dat de interpolatie van mijn Objectanimator niet werkt? Hij verschuift direct 100 pixels naar onderen als je op de knop drukt, geen tweening. Bijt me hier nogal op stuk |:(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button myButton = (Button)findViewById(R.id.myButton);
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ObjectAnimator animY = ObjectAnimator.ofFloat(myButton, "y", 100f);
                animY.setInterpolator(new LinearInterpolator());
                animY.setDuration(2000);
                animY.start();
            }
        });
    }

Acties:
  • 0 Henk 'm!

  • johan223
  • Registratie: September 2010
  • Laatst online: 31-05 15:59
Dank je!

Acties:
  • 0 Henk 'm!

  • Azer
  • Registratie: Oktober 2003
  • Niet online
Leuk idee, ik heb eigenlijk al jaren geen Java meer aangeraakt. Loop tot nu toe nog wel makkelijk door de tutorials heen. In de vorige tutorial was één van de extra opdrachten op vier knoppen te maken die elk een verschillende toast lieten zien. Ik heb dit toen op deze manier opgelost:

View XML:
Java:
1
2
3
4
5
6
7
8
9
10
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HelloTweakers"
        android:id="@+id/btnHelloTweakers"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="121dp"
        android:onClick="btnHelloTweakers_onClick" />


Java code:
Java:
1
2
3
4
5
6
public void btnHelloTweakers_onClick(View view) {
        Context context = this.getApplicationContext();
        int duration = Toast.LENGTH_LONG;
        Toast toast = Toast.makeText(context, "Hello tweakers", duration);
        toast.show();
    }


In de tweede tutorial doen jullie dit door de onclick in de Java code aan de knop te hangen. Waarom doen jullie dit niet gewoon in de XML van de view zelf?

Acties:
  • 0 Henk 'm!

Anoniem: 674598

Het was eigenlijk letterlijk de opdracht om in de DIALOOG 4 knoppen te maken. Daarbij heb je überhaupt geen OnClick event. Maar inderdaad, met knoppen in de container kun je ook direct de OnClick aanroepen, is wel het makkelijkst. Maar ik kan me ook wel voorstellen dat vanuit het doel van modulaireit je liever je logica in de Java file wil hebben en niet in de xml.

Acties:
  • 0 Henk 'm!

  • Niekfct
  • Registratie: Maart 2008
  • Laatst online: 03-07 20:17
Anoniem: 674598 schreef op vrijdag 22 mei 2015 @ 17:41:
Iemand enig idee hoe kan kan dat de interpolatie van mijn Objectanimator niet werkt? Hij verschuift direct 100 pixels naar onderen als je op de knop drukt, geen tweening. Bijt me hier nogal op stuk |:(

[...]
Hier werkt je code prima, op een API19 en 21 device. Kun je misschien wat meer details geven?

Dear Sir/Madam, Fire! Fire! Help me! Looking forward to hearing from you.


Acties:
  • 0 Henk 'm!

Anoniem: 674598

Nu ik het draai op een emulator draait het ook prima. Het is mijn Galaxy S3 Neo die deze app verprutst kennelijk. Heel vreemd want zou wat betreft de API versie gewoon moeten werken.

De S3 Neo heeft android Kitkat, ben even kwijt welke API dat precies is maar iig meer dan het mimimum waarvoor ik de app geschreven heb - die is nml voor Android 4.0.3.

[ Voor 31% gewijzigd door Anoniem: 674598 op 25-05-2015 13:58 ]


Acties:
  • 0 Henk 'm!

  • Niekfct
  • Registratie: Maart 2008
  • Laatst online: 03-07 20:17
Vreemd.

Overigens wil je in deze situatie eerder translationY gebruiken in plaats van y. Laatstgenoemde animeert het object naar y-coordinaat 100, terwijl translationY het object relatief 100 pixels naar beneden verschuift.

Verder zijn er in de View class een aantal properties die je kunt gebruiken om deze String constants te voorkomen: View.Y en View.TRANSLATION_Y. Theoretisch zou dit geen verschil moeten maken, maar je weet maar nooit :)

Dear Sir/Madam, Fire! Fire! Help me! Looking forward to hearing from you.


Acties:
  • 0 Henk 'm!

Anoniem: 583798

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public class vb0201 {
    
    public static void main(String[] args) {   // Create application frame.
        vb0201Frame frame = new vb0201Frame();
        frame.setSize( 900, 700);   // Show frame
        frame.setVisible(true);
    }
}

import javax.swing.*;

public class paneel extends JPanel
{private JButton knop;
 private JTextField tekstvak;
 
 public paneel()
 {
  knop = new JButton( "Klik" );
  tekstvak = new JTekstField( 10 );
  add( knop );
  add( tekstvak );
}
}
      


Als ik deze code run krijg ik: C:\Users\??\Documents\JCreator Pro\MyProjects\vb0201\src\vb0201.java:11: error: class, interface, or enum expected
import javax.swing.*;
^
1 error

Heb JDK geïnstalleerd en toegevoegd. Heeft iemand tips?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:10

Creepy

Tactical Espionage Splatterer

"Import" moet aan het begin van je file worden gebruikt, na "package". Dat mag niet na een type definitie. Zie bijv ook https://docs.oracle.com/j...java/package/usepkgs.html

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Niekfct
  • Registratie: Maart 2008
  • Laatst online: 03-07 20:17
Ook is het niet toegestaan om meerdere Top-Level classes in één .java bestand te hebben. Zie ook https://blogs.oracle.com/...sted_inner_member_and_top.

Dear Sir/Madam, Fire! Fire! Help me! Looking forward to hearing from you.


Acties:
  • 0 Henk 'm!

Anoniem: 583798

Bedankt voor de hulp.

Acties:
  • 0 Henk 'm!

  • Joostlek
  • Registratie: December 2011
  • Laatst online: 21-06 11:16
Een klein misschien offtopic vraagje, maar wat is die song in de intro en outro, het komt me vaag bekend voor

«Nooit geschoten is altijd mis»


Acties:
  • 0 Henk 'm!

  • RoffaboyS
  • Registratie: December 2013
  • Laatst online: 15-04-2023
Challenge 2B snap ik nog wel maar wat bedoelt hij met Challenge 2A text view???

[ Voor 14% gewijzigd door RoffaboyS op 29-05-2015 22:09 ]

https://www.twitch.tv/roffaboys


Acties:
  • 0 Henk 'm!

  • Dipsausje
  • Registratie: Februari 2006
  • Niet online
Als het goed is staat er bovenaan nog een TextView, oorspronkelijk stond daar "Hello World" in, dit is aan het begin van de tutorial naar "Hello Tweakers" aangepast. Challenge 2A is om deze tekst te wijzigen wanneer er op de knop gedrukt wordt.

Acties:
  • 0 Henk 'm!

  • RoffaboyS
  • Registratie: December 2013
  • Laatst online: 15-04-2023
Dipsausje schreef op zaterdag 30 mei 2015 @ 08:54:
Als het goed is staat er bovenaan nog een TextView, oorspronkelijk stond daar "Hello World" in, dit is aan het begin van de tutorial naar "Hello Tweakers" aangepast. Challenge 2A is om deze tekst te wijzigen wanneer er op de knop gedrukt wordt.
Nou ik kan geen stap verder komen en de links onder aan het filmpje doen het niet.

https://www.twitch.tv/roffaboys


Acties:
  • 0 Henk 'm!

  • Dipsausje
  • Registratie: Februari 2006
  • Niet online
RoffaboyS schreef op zondag 31 mei 2015 @ 21:12:
[...]


Nou ik kan geen stap verder komen en de links onder aan het filmpje doen het niet.
Links zijn wat langer dan zou moeten zie ik inderdaad. Dit is wel een erg uitgebreide tutorial over TextViews en het aanpassen ervan: http://android4beginners....text-and-gettext-methods/ misschien dat je daarmee verder komt?
Pagina: 1