Methode aus View aufrufen

P

pixelflicker

Neues Mitglied
Threadstarter
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?
 
T

Tom299

Stammgast
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?
 
P

pixelflicker

Neues Mitglied
Threadstarter
Die Referenz. Klar.
Das wars.

Danke, den Schubs hab ich gebraucht.
 
M

maniac103

Experte
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
 
P

pixelflicker

Neues Mitglied
Threadstarter
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?
 
M

maniac103

Experte
pixelflicker schrieb:
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?
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();
        }
    }
}
 
P

pixelflicker

Neues Mitglied
Threadstarter
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
}
 
N

Neeldarax

Fortgeschrittenes Mitglied
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:
P

pixelflicker

Neues Mitglied
Threadstarter
Aber wie soll ich sonst ohne Referenz auf Elemente (z.B. Textfelder) innerhalb der Activity zugreifen können?
 
T

Tom299

Stammgast
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 ...
 
P

pixelflicker

Neues Mitglied
Threadstarter
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?
 
S

swordi

Gewerbliches Mitglied
du musst ein activity object haben. woher ist egal.

glaub du solltest zuerst java mal näher betrachten.
 
P

pixelflicker

Neues Mitglied
Threadstarter
Mir fehlt einfach die Übung, das weiß ich schon.
 
Oben Unten