我需要知道用户何时向上或向下滚动。我设法实现了这一点,但现在我很难将结果返回到我需要它的主类。具体来说,我不知道如何将结果传递给我创建的界面。
这是我得到的错误:
尝试调用接口方法' void com.app.android.interfaces.ScrollDirection.Down(INT)'在...上 null对象引用
这是我的自定义ScrollView:
public class CustomScrollView extends ScrollView {
private ScrollDirection scrolldirection;
public CustomScrollView(Context context) {
super(context);
scrolldirection = (ScrollDirection) context;
}
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onScrollChanged(int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
super.onScrollChanged(scrollX, scrollY, oldScrollX, oldScrollY);
if(scrollY<oldScrollY){
scrolldirection.Down(1);
}else{
scrolldirection.Down(-1);
}
}
public interface ScrollDirection{
public void Down(int direction);
}
}
答案 0 :(得分:4)
您需要在每个构造函数
中添加此行scrolldirection = (ScrollDirection) context;
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
scrolldirection = (ScrollDirection) context;
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
scrolldirection = (ScrollDirection) context;
}
要允许Android Studio与您的视图进行交互,您必须至少提供一个构造函数,该构造函数将Context和AttributeSet对象作为参数
更新:最近的问题是CustomScrollView
内Fragment
的实施,但Fragment
没有context
。要实现这一点,请将父Activity
implements
设为ScrollDirection
并在Fragment
中创建一些功能,并从Activity's
Down
函数调用它们。