2014-09-07 2 views
0

У меня возникли проблемы с привязкой рассыпного прослушивателя с помощью метода, который обновляет изображение bakground в представлении.Метод вызова в MyActivity из класса прослушивателя

В два отдельных компоненте работает в изоляции - то есть:. 1) У меня есть слушатель в «классе LayoutSwipeListener», который улавливает жесты на макете Этого слушатель работает нормально 2) У меня есть метод в. MainActivity, называемый «updateWallpaperForward», который обновляет фоновое изображение на макете.

Однако, что я хочу сделать, это вызвать метод updateWallpaperForward из моего класса LayoutSwipeListener. Я не могу этого сделать. В настоящее время он компилируется, но приложение падает, когда я сажусь.

Любая помощь в этом была бы принята с благодарностью!

Соответствующий код приведен ниже:

КЛАСС: MyActivity.java

//Layout for wallpaper change 
LinearLayout WallpaperLayout; 
.... 
protected void onCreate(Bundle savedInstanceState) { 
... 
//Wallpaper layout 
WallpaperLayout = (LinearLayout) findViewById(R.id.wallpaperLayout); 
WallpaperLayout.setOnTouchListener(new LayoutSwipeListener(this)); 
... 
public void updateWallpaperForward(View view) { 
    switch(wallpaperID) { 
     case 1: 
      WallpaperLayout.setBackgroundResource(R.drawable.wallpapertwo); 
      wallpaperID=2; 
      break; 
    ... 

КЛАСС: LayoutSwipeListener.java

public class LayoutSwipeListener implements View.OnTouchListener { 

      private Activity activity; 
    static final int MIN_DISTANCE = 100; 
    private float downX, downY, upX, upY; 
    public int wallpaperID = 1; 

    //Layout for wallpaper change 
    LinearLayout WallpaperLayout; 

    // private MainActivity mMainActivity; 

    public LayoutSwipeListener (Activity mainActivity) { 
     activity = mainActivity; 
    } 
...... 

    public void onLeftToRightSwipe() { 
     activity.updateWallpaperForward(); 
     //// THIS IS WHERE IM STUCK - IT DOESNT PICK Up THIS METHOD IN THE EDITOR OR COMPILE 
+0

Просто для добавления - я попытался сделать статический статический метод, но он не работает, поскольку он имеет поля, на которые нельзя ссылаться, если они статичны. –

ответ

0

Я понял это ...

public LayoutSwipeListener (Activity mainActivity) { 
     activity = mainActivity; 
     WallpaperLayout = (LinearLayout) activity.findViewById(R.id.wallpaperLayout); // THIS IS THE LINE I NEEDED 
    } 

Th anks,

Смежные вопросы