2017-02-01 2 views
2

zu übergeben Ich baue eine Android-App (aber das ist nicht wichtig für den Beitrag) und ich schreibe eine Methode namens scrollUntilSelectedAvatar(), die eine Klasse enthalten:Der beste Weg, um eine Variable von der äußeren Klasse zur inneren Klasse

public class AvatarManager { 

    private HorizontalScrollView avatarPageHorizontalScrollView; 

    //mehod that contains the inner class 
    public void scrollUntilSelectedAvatar(HorizontalScrollView avatarPageHorizontalScrollView){ 

     this.avatarPageHorizontalScrollView = avatarPageHorizontalScrollView; 

     avatarPageHorizontalScrollView.post(new Runnable() { 
      @Override 
      public void run() { 
       AvatarManager.this.avatarPageHorizontalScrollView.scrollTo(100, 0); 
      } 
     }); 
    } 

} 

Meine Frage ist: was ist der richtige Weg ist für den Zugriff auf avatarPageHorizontalScrollView (die ich auf das Verfahren als Argument übergeben) in der inneren Klasse new Runnable().

Der Weg, den ich gefunden habe (AvatarManager.this.avatarPageHorizontalScrollView) scheint nicht der beste Weg.

danken allen für die Hilfe :)

+2

Warum denken Sie, dass Ihr Weg falsch ist? –

+0

Dunno, ich dachte, es gibt einen besseren Weg, es zu tun :) – MDP

Antwort

1

So wie du es getan hat - ist die einzige richtig. Die Syntax einiger Dinge über innere Klassen mag ziemlich seltsam erscheinen. Aber es ist so wie es ist.

public class A { 

    private int a; 

    private abstract class B { 
     public abstract void printA(); 
    } 

    public B makeB() { 
     return new B() { 
      @Override 
      public void printA() { 
       System.out.println(A.this.a); 
      } 
     }; 
    } 
} 
+0

Danke Mann :) – MDP

Verwandte Themen