Announcement

Collapse
No announcement yet.

Zugriff von einer Klasse auf eine andere Klasse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff von einer Klasse auf eine andere Klasse

    Ich habe zwei Klassen:

    public class MyActivity extends Activity
    {
    Spinner spTest;

    spTest wird initialisiert, macht dieses und das und funktioniert

    }

    public class YouActivity extends MyActivity
    {
    ?? spTest ist an dieser Stelle = null ??
    }

    Warum ist spTest in YouActivity zwar sichtbar aber null ?

  • #2
    Vermutlich, weil du in der Klasse MyActivity den Zugriffsmodifizier für spTest nicht gesetzt hast. Der sollte auf protected stehen
    Christian

    Comment


    • #3
      Nein, das ist es nicht. Leider nicht.

      Comment


      • #4
        Interessantes Problem, aber ohne weitere Infos nicht aus der Ferne lösbar. Du bist sicher, dass die Instanz von YouActivity irgendwie die Instanz der MyActivity bekommt? Warum wird in MyActivity der Spinner inititalisiert und nicht in YouActivity?
        Ggf. musst du in YouActivity einen Konstruktor bereitstellen, der die Instanz von MyActivity bekommt und den dortigen Spinner übernimmt

        Beispiel:

        [highlight=java]
        public class A
        {
        public int wert;

        public void setWert(int wert)
        {
        this.wert=wert;
        }
        }
        [/highlight]

        [highlight=java]
        public class B extends A
        {
        public int holeWertAusA()
        {
        return wert;
        }

        }
        [/highlight]

        [highlight=java]
        A a=new A();
        a.setWert(5);
        B b=new B();
        System.out.println(b.holeWertAusA());
        [/highlight]
        Ergibt 0, da die Instanz von b nicht von der Instanz a weiss

        Mögliche Lösung:

        [highlight=java]
        public class B extends A
        {
        public B(A a)
        {
        this.wert=a.wert;
        }

        public int holeWertAusA()
        {
        return wert;
        }

        }
        [/highlight]

        [highlight=java]
        A a=new A();
        a.setWert(5);
        B b=new B(a);
        System.out.println(b.holeWertAusA());
        }
        [/highlight]
        Zuletzt editiert von Christian Marquardt; 10.09.2013, 13:22.
        Christian

        Comment


        • #5
          Vererbte Klassen übergeben nur die struktur oder verweise zu statischen werten.

          vielleicht kann dir der folgende Codeschnipsel das näher bringen:

          [highlight=csharp]

          public class A
          {
          public static int StaticWert;
          public int Wert;
          }

          public class B : A
          {
          public int GetStaticWert()
          {
          return StaticWert;
          }
          public int GetWert()
          {
          return Wert;
          }
          }
          public class Main : A
          {
          public Main()
          {
          A.StaticWert = 2;
          var b = new B();
          b.GetStaticWert();

          var a = new A();
          a.Wert = 2;
          var c = new B();
          c.GetWert();

          c.Wert = 2;
          c.GetWert();
          StaticWert = 3;
          c.GetStaticWert();
          }
          }
          [/highlight]

          Comment


          • #6
            Das Übergeben an den Konstruktor funktioniert, das war meine letzten Lösung. Ich vermute, ich mache irgendetwas
            falsch, was ich einfach nicht sehe. Ich übergebe es dem K.

            Comment


            • #7
              "Vererbte Klassen übergeben nur die struktur oder verweise zu statischen werten!"

              Das war mir nicht bewußt. Danke

              Comment


              • #8
                Dann poste mal deinen Code, wenn es nicht geht. Wie gesagt, warum init. du nicht YouActivity. Wird dann mal MyActivity benötigt, kannst du casten:

                MyActivity my=(MyActivity)YouActivity;
                Zuletzt editiert von Christian Marquardt; 10.09.2013, 17:17.
                Christian

                Comment

                Working...
                X