1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Methode aus View aufrufen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pixelflicker, 20.09.2011.

  1. pixelflicker, 20.09.2011 #1
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Hallo,

    ich steh grad total auf dem Schlauch. Obwohl es etwas selbstvertändliches ist komme ich nicht drauf, vielleicht kann mich jemand drauf schubsen.

    Wenn ich eine zweite Klasse erstelle und innerhalb einer View ein Objekt anlege ( MeineKlasse objekt = new MeineKlasse() ) dann habe ich ja das objekt. Wenn ich nun aus diesem objekt heraus eine Methode in der View aufrufen will, wie geht das? Ich weiß ja den Objektnamen der View nicht, oder?

    Also ich habe z.B. in der View eine Methode setText(). Wie kann ich die dann aus der zweiten Klasse heraus aufrufen?
     
  2. Tom299, 20.09.2011 #2
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    hmm, so richtig kapier ich zwar nicht was du meinst, aber wenn du in deiner X-ten klasse eine methode von Y aufrufen willst, brauchst du eine referenz auf Y, es sei denn, es ist ne statische methode. also die referenz der view in deinem konstruktor der 2. klasse mitgeben, dann sollte es doch passen, oder?
     
  3. pixelflicker, 20.09.2011 #3
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Die Referenz. Klar.
    Das wars.

    Danke, den Schubs hab ich gebraucht.
     
  4. maniac103, 20.09.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Wenn es ein inneres, nicht-statisches Objekt ist, solltest du doch die Methoden der äußeren Klasse genauso aufrufen können, als wenn sie zur inneren Klasse gehören, d.h. einfach setText("foo"), oder?

    Sent from my MB525 using Tapatalk
     
  5. pixelflicker, 20.09.2011 #5
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Es ist ja keine Abgeleitete Klasse. Ich hab nur nicht dran gedacht, dass ich ja einfach einen Link mitgeben kann. Ich mag einfach nur eine Methode aus der Activity-Klasse aus einer anderen Klasse heraus ansprechen.

    Direkt ansprechen mit einem Objektnamen kann man das Objekt der Activity wohl nicht, oder?
     
  6. maniac103, 21.09.2011 #6
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Es muss ja auch keine abgeleitete Klasse sein. Sowas hier sollte funktionieren:
    Code:
    public class Foo {
        public Foo() {
        }
        private void method() {
        }
    
        private class Bar {
            public Bar() {
                method();
            }
        }
    }
    
     
  7. pixelflicker, 21.09.2011 #7
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Achso, nein, ich wollte es ja als seperate Klasse haben, weil ich es auslagen möchte. Also eher so:

    Activity A:
    Code:
    public class ActivityA extends Activity {
      public void methodeA() {
        System.out.println("sag was");
      }
    
      KlasseB aufruf = new KlasseB();
    }
    
    Klasse B:
    Code:
    public class KlasseB {
      // Aufruf von MethodeA in Klasse A
    }
    
     
  8. Neeldarax, 21.09.2011 #8
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hallo pixelflicker,

    Activity A:
    Code:
    public class ActivityA extends Activity {
      public void methodeA() {
        System.out.println("sag was");
      }
    
      KlasseB aufruf = new KlasseB(this);
    }
    
    Klasse B:
    Code:
    public class KlasseB {
       ActivityA actiA;
    
       public KlasseB(ActivityA actiA){
       this.actiA=actiA;
       }
      // Aufruf von MethodeA in Klasse A
      // actiA.methodeA();
    }
    
    So sollte es mit Parameterübergabe gehen.
    Aber Activity übergeben würd ich zwei Mal überlegen. Nur manchmal lässt es sich nicht vermeiden.

    Vllt. kannste auch nach Callbacks googlen, ist auch ne gute Möglichkeit!

    regards
     
    Zuletzt bearbeitet: 21.09.2011
  9. pixelflicker, 21.09.2011 #9
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Aber wie soll ich sonst ohne Referenz auf Elemente (z.B. Textfelder) innerhalb der Activity zugreifen können?
     
  10. Tom299, 21.09.2011 #10
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Hmmm, mußt du jetzt auf Methoden der anderen Klasse zugreifen oder willst du "nur" Eigenschaften von anderen Widgets setzen?

    Weil die Elemente kannst du dir ja immer mit findViewById(R.id.xxx) besorgen ...
     
  11. pixelflicker, 21.09.2011 #11
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Schön wäre es, wenn ich Beides könnte.
    Grundsätzlich gehts mir aber erstmal nur um die Widgets.
    findViewById bekomme ich aber nur, wenn ich die Klasse mit "extends Activity" anlege, oder?
     
  12. swordi, 21.09.2011 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du musst ein activity object haben. woher ist egal.

    glaub du solltest zuerst java mal näher betrachten.
     
  13. pixelflicker, 21.09.2011 #13
    pixelflicker

    pixelflicker Threadstarter Junior Mitglied

    Beiträge:
    32
    Erhaltene Danke:
    2
    Registriert seit:
    19.06.2010
    Mir fehlt einfach die Übung, das weiß ich schon.
     

Diese Seite empfehlen