Main Activity 自定义视图中的侦听器?

Main Activity Listener in a Custom View?

嘿,我正在尝试在我的自定义视图中的主 activity 中获取实时数据更改。我想为视图实现一个侦听器,这样每当我的 Main Activity 发生任何变化时,我的视图就会知道并相应地采取行动。

以下是我的主要 Activity。

public void setChangeListener(OnChangeListener onChangeListener){
    this.onChangeListener = onChangeListener;
}

public interface OnChangeListener{
    void currentRadius(int r);
    void currentSpeed(int s);
}

我已经在视图中初始化了相同的内容,

public CustomView extends View{

//CONSTRUCTORS

//EVERYTHING ELSE

    //These are inside the init(Context context) method.
    MainActivity mainActivity = new MainActivity();
        mainActivity.setOnChangeListener(new MainActivity.OnChangeListener() {
            @Override
            public void currentR(int r) {
                Log.d("R", ""+r);
            }

            @Override
            public void currentS(int s) {
                Log.d("S", ""+s);
            }
        });

}

但这在

处给了我 NullPointerException
onChangeListener.currentR(//INTEGER VALUE);
onChangeListener.currentS(//INTEGER VALUE);

它们在 onProgressChanged 监听器中。

我想问的是,是否可以使用 Activity 中的 Listeners 向 View 发送数据?如果是,那么任何指针将不胜感激。谢谢。

MainActivity mainActivity = new MainActivity();

不要实例化 Activity。将 MainActivity 上下文传递给视图并使用它来执行操作。 示例上下文

Context context = MainActivty.this; 

MainActivity

CustomView mCustomeView =  new CustomView(this); // or Resource id 

CustomView

中创建方法
        public void currentR(int r) {
            Log.d("R", ""+r);
        }

        public void currentS(int s) {
            Log.d("S", ""+s);
        }

然后调用 MainActivity

中的方法
mCustomeView.currentR(integervalue);
mCustomeView.currentS(integervalue);

注意:请确保从该方法更改 UI。它将在 Main UI Thread 中。否则它会抛出错误

希望对您有所帮助