gpt4 book ai didi

java - 使用自定义 ScrollView 类实现界面 - Android

转载 作者:行者123 更新时间:2023-11-29 08:39:24 25 4
gpt4 key购买 nike

我需要知道用户何时向上或向下滚动。我设法实现了这一目标,但现在我无法将结果返回到我需要的主类(class)。具体来说,我不知道如何将结果传递到我创建的接口(interface)。

这是我得到的错误:

Attempt to invoke interface method 'void com.app.android.interfaces.ScrollDirection.Down(int)' on a null object reference

这是我的自定义 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 与您的 View 进行交互,您至少必须提供一个以 Context 和 AttributeSet 对象作为参数的构造函数

Docs link

更新: 最近的问题是 Fragment 中的 CustomScrollView 的实现,但是 Fragment 没有它们的 上下文。要实现这一点,让父级 Activity implements ScrollDirection 并在 Fragment 中创建一些函数并从 中调用它们>Activity 的 Down 函数。

关于java - 使用自定义 ScrollView 类实现界面 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41463829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com