自定义视图中的主要活动监听器?

时间:2017-01-12 07:01:25

标签: android interface listener android-custom-view listeners

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

以下是我的主要活动。

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

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

我在View as中初始化了相同的内容,

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监听器内。

我想问的是,甚至可以使用Listener从Activity发送数据到View?如果是,那么任何指针都将受到赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

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,请确保。它将在主UI线程中。另外,它会抛出错误

希望这个帮助

答案 1 :(得分:0)

  

MainActivity mainActivity = new MainActivity();

不要实例化活动。将MainActivity上下文传递给视图并使用它来执行操作。 样本背景

Context context = MainActivty.this;