2017-02-01 3 views
2

Я создаю приложение для Android (но это не важно для сообщения), и я пишу метод под названием scrollUntilSelectedAvatar(), который содержит класс:Лучший способ передать переменную из внешнего класса во внутренний класс

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); 
      } 
     }); 
    } 

} 

Мой вопрос: что это правильный путь, чтобы получить доступ avatarPageHorizontalScrollView (что я перехожу к методу в качестве аргумента) внутри внутреннего класса new Runnable().

То, что я нашел (AvatarManager.this.avatarPageHorizontalScrollView), кажется не лучшим образом.

Спасибо всем за помощь :)

+2

Почему, по вашему мнению, неправильный? –

+0

Dunno, я думал, что есть лучший способ сделать это :) – MDP

ответ

1

То, как вы это сделали, - это одна и единственно правильным. Синтаксис какой-то вещи о внутренних классах может показаться довольно странным. Но так оно и есть.

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

Спасибо, человек :) – MDP