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

Hauptview abfragen und an eine Methode übergeben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von tobbbbi, 27.02.2011.

  1. tobbbbi, 27.02.2011 #1
    tobbbbi

    tobbbbi Threadstarter Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    3
    Registriert seit:
    06.01.2011
    Hallo!

    Ich habe mal wieder eine Frage, die sicherlich leicht zu beantworten ist. Aber ich komme einfach nicht auf die Lösung.

    Es geht um folgendes einfaches Szernario: Von meiner Hauptklasse aus in der die contenView gesetzt wurde, möchte ich eine Instanz einer anderen Klasse erzeugen und dabei dem Konstruktor die eigene HauptView mitgeben.

    Jetzt weiß ich nicht, wie ich an die Referenz zur eigenen View herankomme.
    In den OnClick Methoden zB. eines Buttons wird ja die View übergeben, zB.:
    Code:
    public void onClickStartButton(final View myView)
        { 
          MyClass mine = new MyClass(myView); 
         ... }
    In meinem Fall möchte ich aber aus einem OptionsMenu heraus eine neue Klasse erzeugen und die View übergeben:

    Code:
    public boolean onOptionsItemSelected(MenuItem item)
        {
            switch (item.getItemId()) {
            
            case MENU_CONNECT:
              Connect(myView);
            break;
            
            case MENU_SEND:
            SendData(data);
            break;
            }
            return true;
        }
    Vielleicht fragt ihr euch jetzt, wieso ich in der anderen Klasse eine Referenz auf die View brauche. Ich möchte ganz einfach auf Funktionen der Klasse mit einem Toast reagieren, zB. so:
    Code:
    Toast t = Toast.makeText(myView.getContext(), data + " wurde gesendet.", Toast.LENGTH_LONG );
      t.show();

    Könnt ihr mir also bitte sagen, wie ich an die Viewreferenz komme?

    Danke und Gruß
    Tobias
     
  2. PeaceI, 27.02.2011 #2
    PeaceI

    PeaceI Android-Hilfe.de Mitglied

    Beiträge:
    65
    Erhaltene Danke:
    12
    Registriert seit:
    26.07.2009
    Das BasisUI-Element ist die Activity, diese ist selbst kein View, aber jedoch ein Context. Um diesen scheint es dir ja zu gehen.
    Also übergib doch direkt die Activity als Context und nicht erst eine View:

    ...
    case MENU_CONNECT:
    Connect(this);
    break;
    ...

    ;)
     
  3. tobbbbi, 27.02.2011 #3
    tobbbbi

    tobbbbi Threadstarter Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    3
    Registriert seit:
    06.01.2011
    Genial! Danke. :)

    Was mich dabei noch interessieren würde:
    Code:
    myView.getContext()
    Bei myView handelt es sich ja um eine View und von dieser hole ich mir dann die Activity (Context). Wo liegt der Unterschied zwischen dieser View und der Activity? Wie kann ich mir das vorstellen. Ist die View eine Art Panel oder Frame in der alle anderen Views platziert werden?


     
  4. PeaceI, 27.02.2011 #4
    PeaceI

    PeaceI Android-Hilfe.de Mitglied

    Beiträge:
    65
    Erhaltene Danke:
    12
    Registriert seit:
    26.07.2009
    Die Activity ist die Einstiegsklasse für deine App und sogesehen die "Schnittstelle" zum System. Im Prinzip kannst du sie dir als dein "Fenster das aufgeht" vorstellen. Dein "Gui-Baum" muss dann natürlich hierdran gesetzt werden.
    Ein View ist ein Gui-Element, das weitere Elemente beinhalten kann (Panel trifft es hier schon ganz gut, z.B. LinearLayout) oder direkt für den User nutzbar ist (z.B. Button).
     

Diese Seite empfehlen