从侦听器类调用MyActivity中的方法

时间:2014-09-07 04:55:50

标签: methods ontouchlistener

我无法使用更新视图上的bakground图像的方法来绑定layoutswipe侦听器。

两个单独的组件正在孤立地工作 - 即: 1)我在' LayoutSwipeListener"中有一个听众。在布局上拾取手势的类。这个听众工作正常。 2)我在MainActivity中有一个名为' updateWallpaperForward"的方法。它会更新布局视图中的背景图像。

但是,我想要做的是调用" updateWallpaperForward"我的LayoutSwipeListener类中的方法。我不能这样做。它目前正在编译,但是当我滑动时应用程序崩溃。

对此的任何帮助将不胜感激!

相关代码如下:

CLASS: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;
  ...

CLASS: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

1 个答案:

答案 0 :(得分:0)

我明白了......

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

谢谢,