Objektorientierung..

  • Es scheint, dass ich immer noch ein paar Konzepte der objektorientierten Programmierweise nicht verstanden habe(n) (will).. :(

    Im Prinzip möchte ich mittels Google Android API den Location Manager aufrufen.

    Context context;
    TextView tv = new TextView("this");

    tv.setText("1");
    LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    tv.setText(2");

    der Emulator gibt am Display jedoch nur "1" aus, auf "2" kommt er nicht. Nun denke ich mir, dass ich vermutlich einfach nur nicht verstanden habe, den LocationManager bzw die Klasse Context richtig zu verwenden/verbinden.

    Beim LocationManager (http://code.google.com/android/refere…ionManager.html)
    steht:

    "You do not instantiate this class directly; instead, retrieve it through Context.getSystemService(Context.LOCATION_SERVICE)."

    Deshalb mach ich eben wie oben:

    Context context
    LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    [im Übrigen: warum schreiben Sie als Beispiel "Context.getSystemService(Context.LOCATION_SERVICE)"
    an, wenn man es so überhaupt nicht verwenden kann, sondern zuerst Context context; machen muss? also sie instantiieren muss? siehe:
    context.getSystemService(Context.LOCATION_SERVICE)]

    So, da sich aber nix tut ("2" nicht ausgegeben wird), denke ich, liegt es vielleicht daran (an der Klasse Context):

    Context:
    Interface to global information about an application environment. This is an abstract class whose implementation is provided by ApplicationContext. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.


    Das heisst, einfach "Context context;" reicht nicht. Sondern ich muss sie implementieren (richtig?)


    Wenn ich jetzt jedoch auf die Klasse ApplicationContext gehe, und irgendeine Methode suche, die mir ein Context zurückgibt, finde ich die


    (Context) createPackageContext(String packageName, int flags)

    (link: http://code.google.com/android/refere…ionContext.html)

    Um jedoch jetzt eine ApplicationContext zu erzeugen, steht im Constructor;
    ApplicationContext(ApplicationContext context)
    Create a new ApplicationContext from an existing one

    und da stehe ich an..


    Wo ist mein Denkfehler?

    Problem vorerst gelöst:

    ApplicationContext appContext = new ApplicationContext(airMidlet);
    context = appContext.createPackageContext(airMidlet.getPackageName(), Context.CONTEXT_INCLUDE_CODE);

    aber ganz klar ist es mir nicht.. war mehr experiement als veständnis.


    context Klasse:
    http://code.google.com/android/refere…nt/Context.html

  • Hm...
    Bei so J2ME Projekten passiert es manchmal, dass der Console-Output irgendwie nicht angezeigt wird, war bei mir zumindest manchmal so (bei Eclipse).

    Na ja also was ich so gesehen habe liegt der Fehler darin, dass du den Context eben nicht initialisierst sondern nur deklarierst. Allerdings ist mir schleierhaft, wie man so einen ApplicationContext erstellt - Context kann man ja nicht erstellen. Bin gerade dabei diese Dokumentation etwas zu durchforsten, kann aber leider nichts finden.

    There's no better place than 127.0.0.1!

  • "bin gerade dabei die dok zu durchforsten"

    -> java-girl, du bist ja echt javascharf ;)


    habs mal so gelöst;


    ApplicationContext appContext = new ApplicationContext(airMidlet); context = appContext.createPackageContext(airMidlet.getPackageName(), Context.CONTEXT_INCLUDE_CODE);

    jetzt brauch ich nur noch den LocationProvider.. gar nicht so einfach.. rr..

    ps: ich glaub, ich werd noch die lva objektorientiere programmierung besuchen..schaden kanns ja nicht..

  • Na ja, dein Problem ist ja nicht unbedingt dass du die Objektorientierung nicht verstehst, sondern dass die Doku dieses speziellen Packages etwas undurchsichtig ist.
    Probiers jetzt einmal so aus, sonst such noch mal was im Internet bzw. lies dir das Tutorial durch, da dürftest du sicher was finden.

    There's no better place than 127.0.0.1!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!