【问题标题】:Main Activity Listener in a Custom View?自定义视图中的主要活动侦听器?
【发布时间】:2017-01-12 07:01:24
【问题描述】:

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

以下是我的主要活动。

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

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

我已经在View中初始化了,

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

我想问的是,甚至可以使用监听器从活动发送数据到视图吗?如果是,那么任何指针将不胜感激。谢谢。

【问题讨论】:

  • 什么是视图?解释
  • onProgressChanged 从哪里打电话?表格Aysnc Task?
  • @MayurRaval 不,它是一个搜索栏进度更改监听器。

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


【解决方案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,请确保。它将在 Main UI Thread 中。否则会抛出错误

希望有帮助

【讨论】:

  • 谢谢,我能够实现我想要的。 (Y)
【解决方案2】:

MainActivity mainActivity = new MainActivity();

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

Context context = MainActivty.this; 

【讨论】:

  • 我试过了,无论如何我都在视图的构造函数中传递上下文,但我不能用它来调用setOnChangeListener 并创建一个相同的监听器,
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 2021-09-29
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 2018-11-07
  • 2014-05-21
  • 2017-09-07
相关资源
最近更新 更多