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 中。否则它会抛出错误
希望对您有所帮助
嘿,我正在尝试在我的自定义视图中的主 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);
}
});
}
但这在
处给了我 NullPointerExceptiononChangeListener.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 中。否则它会抛出错误
希望对您有所帮助