[Android]"Nieuws cannot be resolved"

Pagina: 1
Acties:
  • 483 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • thijsje66
  • Registratie: Juni 2009
  • Laatst online: 09-09 15:07
Ik ben nu aan het ontwikkelen voor Android, en wil een RSS readertje voor T.Net maken.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.android.tweakers.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebView;

public class rss extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WebView Home = new WebView(this);
        String summary = "<html><body>Welkom bij deze RSS Reader voor T.Net. <br>Deze RSS Reader is niet officieel door Tweakers.net. <br>Heb je suggesties of opmerkingen, mail dan naar:<br> thijs.koot@gmail.com</body></html>";
         Home.loadData(summary, "text/html", "utf-8");
        Home.getSettings().setJavaScriptEnabled(true);
    }


    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, Nieuws, 1, "Nieuws");
        menu.add(0, Quit, 2, "Quit");
    }
/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
            WebView Nieuws = new WebView (this);
            Nieuws.loadUrl("http://www.tweakers.mobi/rss/nieuws");
            setContentView(Nieuws);
            Nieuws.getSettings().setJavaScriptEnabled(true);
        
    case 2:
            finish();
}
    return false;
}   
}

Dit is de code die ik heb ingevoerd, maar bij:
code:
1
2
3
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, Nieuws, 1, "Nieuws");
        menu.add(0, Quit, 2, "Quit");

zegt Eclipse:
[quote]
"Nieuws cannot be resolved"
En dat is niet alleen in dit geval, maar in alle gevallen, en dit belemmert mijn vorderingen erg!
Ik heb al op developer.android.com gekeken, naar wat het mogelijk zou kunnen zijn, maar daar stond ook niets.
Alles is keurig volgens de richtlijnen van de Developer Guide gedaan, inclusief de installatie van alles, maar toch doet hij het niet.
Google geeft ook geen oplossingen?

Hebben meer mensen dit probleem en heel misschien de oplossing?

Ik heb geen leuke ondertitel.


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 14:06

NetForce1

(inspiratie == 0) -> true

Het is in Java gebruikelijk om classenamen met een hoofdletter te laten beginnen, en variabele-namen met een kleine letter, dat je dat door elkaar gebruikt maakt het er niet makkelijker op.
Lees je verder eens in over scoping, waar zou Nieuws op regel 22 vandaan moeten komen volgens jou?

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Wat zegt de stacktrace?

Wat zijn de waarde van je variablen op het moment van de crash?

Kortom: Programming FAQ - Algemeen

[ Voor 74% gewijzigd door Snake op 30-03-2010 20:02 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 14:06

NetForce1

(inspiratie == 0) -> true

Niets, want het is een compile-error

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Goed, dan nog informatie aub, welke regel enzo?

Zat op de verkeerde regel te lezen.

Goed: ik denk dat je 'Nieuws' moet declareren als zijnde een uniek id waarop de case kan switchen. Ik zoek even naar een oplossing...

[ Voor 66% gewijzigd door Snake op 30-03-2010 20:07 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 14:06

NetForce1

(inspiratie == 0) -> true

Snake schreef op dinsdag 30 maart 2010 @ 20:03:
Goed, dan nog informatie aub, welke regel enzo?
Komop, dat staat gewoon in de startpost

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

TS moet dit eens lezen: http://developerlife.com/tutorials/?p=304

Vooral bovenaan waar hij die dingen increment. Misschien kan ie beter http://developer.android.com/guide/topics/ui/menus.html#xml je menu in xml definen? :)
NetForce1 schreef op dinsdag 30 maart 2010 @ 20:04:
[...]

Komop, dat staat gewoon in de startpost
Maar je moet je niet zo opjagen :*

[ Voor 30% gewijzigd door Snake op 30-03-2010 20:10 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
@Snake, volgens mij denk je al een stap vooruit (of hij gebruikt de naam 'Nieuws' voor twee dingen) en moet de TS zich eerst inlezen over member variabelen vs. local variabelen :)

[ Voor 16% gewijzigd door user109731 op 30-03-2010 20:18 ]


Acties:
  • 0 Henk 'm!

  • thijsje66
  • Registratie: Juni 2009
  • Laatst online: 09-09 15:07
Dat ziet er wel interessant uit. Anders dan in de Dev Guide, maar als het werkt...

Ik heb geen leuke ondertitel.


Acties:
  • 0 Henk 'm!

  • DEiE
  • Registratie: November 2006
  • Laatst online: 18-09 15:15
Je kan je menu ook in xml maken, zodat je je code en layout gescheiden houdt. Je menu lijkt hier statisch, dus wellicht kan je dat ook nog doen.
http://developer.android.com/guide/topics/ui/menus.html#xml

Acties:
  • 0 Henk 'm!

Verwijderd

Dit lijkt me een scoping probleem. Nieuws (en Quit ook) zijn niet bekend in de methode onCreateOptionsMenu. Sterker nog in de methode onOptionsItemSelected (weer een andere scope) wordt de variable Nieuws aangemaakt als instantie van WebView, dat geeft alleen maar verwarring.

In de methode onCreateOptionsMenu dien je volgens mij Nieuws en Quit als MenuItem te instantieren (of in plaats daarvan gewoon de aanroep menu.add aan te passen.

Ow ja. Dit is is Java. Daar heeft GoT een highlighter voor afaik. Dat helpt bij het lezen ;)

[ Voor 0% gewijzigd door Verwijderd op 30-03-2010 22:32 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Het probleem is tamelijk simpel te spotten, mits je een beetje programmeerervaring hebt. Je zit hier op regel 2 een variabele genaamd Nieuws.
Java:
1
2
3
4
public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, Nieuws, 1, "Nieuws");
        menu.add(0, Quit, 2, "Quit");
    }

De foutmelding van Eclipse is eigenlijk ook best wel logisch, "Nieuws cannot be resolved": hij kan de variabele genaamd Nieuws nergens uit terughalen. Logisch, het is immers niet gedefinieerd in je scope (van de functie) en niet in je klasse als attribuut.

Het gebruik van deze variabele wijst erop dat je een attribuut zou moeten hebben genaamd Nieuws, dus, iets in de trant van:
Java:
1
private WebView Nieuws = new WebView (this);


Deze instantievariabele kun je in je constructor (of bij Android liever bij je onCreate() ) bijvoorbeeld instantieren, of direct, tis maar net wat je fijn vind.

Het probleem is echter wel een beetje basic, misschien moet je toch even snel een korte cursus programmeren (in Java) volgen om even de basics in de vingers te krijgen, dan had je dit probleempje namelijk zelf ook al gespot, plus het maakt het programmeren in het algemeen ook heel wat makkelijker voor je.


Java highlighting doe je zo: [code=java]//hier java code[/code]

[ Voor 15% gewijzigd door Enfer op 30-03-2010 22:48 ]


Acties:
  • 0 Henk 'm!

  • thijsje66
  • Registratie: Juni 2009
  • Laatst online: 09-09 15:07
Java:
1
2
3
4
5
6
    private WebView Nieuws = new WebView (this);
    
    public boolean onCreateOptionsMenu(Menu menu) {
        
        menu.add(0, Nieuws, 1, "Nieuws");
}

geeft:
The method add(int, int, int, CharSequence) in the type Menu is not applicable for the arguments (int, WebView, int, String)

Ik heb geen leuke ondertitel.


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 14:06

NetForce1

(inspiratie == 0) -> true

En wat lees je daar uit? De melding spreekt toch voor zich lijkt me, je geeft een object van type WebView, waar een int verwacht wordt.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

thijsje66 schreef op woensdag 31 maart 2010 @ 18:56:
Java:
1
2
3
4
5
6
    private WebView Nieuws = new WebView (this);
    
    public boolean onCreateOptionsMenu(Menu menu) {
        
        menu.add(0, Nieuws, 1, "Nieuws");
}

geeft:

[...]
http://developer.android....java.lang.CharSequence%29

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • thijsje66
  • Registratie: Juni 2009
  • Laatst online: 09-09 15:07
@CodeCaster
Oh.
Duidelijk, ik fix het morgen wel even in mijn project, en dan kan hij online!

Ik heb geen leuke ondertitel.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sorry hoor, maar dit soort compiler fouten moet je gewoon zelf op kunnen lossen, en hebben ook niet specifiek met Android te maken.

Als je dit soort compiler opties niet zelf op kunt lossen moet je misschien nog een goed Java boek kopen. Bij beide foutmeldingen waar je nu op vast loopt staat het probleem redelijk duidelijk in de foutmelding, en met wat meer zoeken had je die dus best op kunnen lossen.

Deze gaat in ieder geval op slot

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1

Dit topic is gesloten.