我需要知道用户何时上下滚动。我设法实现了这一目标,但现在我不得不将结果返回到需要的地方。具体来说,我不知道如何将结果传递给我创建的接口。
这是我得到的错误:
尝试调用接口方法“ void”
com.app.android.interfaces.ScrollDirection.Down(int)'
空对象引用
这是我的自定义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);
}
}
最佳答案
您需要在每个构造函数中添加此行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对象为参数的构造函数
Docs link
更新:最近的问题是在
CustomScrollView
中实现了Fragment
,但是Fragment
没有其context
。要实现此目的,请将父Activity
implements
设为ScrollDirection
,并在Fragment
中创建一些函数,然后从Activity's
Down
函数中调用它们。