将数据从自定义视图发送到父活动

时间:2012-11-12 17:28:27

标签: android android-activity android-view

我有一个包含自定义视图和多个按钮的活动。

现在,如果单击该视图,我将在视图类中使用覆盖onTouchEvent处理它。

但是,根据用户完全点击的位置,我可能想要更改父活动中按钮中包含的文本。

换句话说:如何让父活动从我的自定义视图中接收数据?

1 个答案:

答案 0 :(得分:2)

定义一个接口并使用回调让活动知道该视图已被触摸。

public Interface ViewWasTouchedListener {
    void onViewTouched(float x, float y);
}

在自定义视图中

ArrayList<ViewWasTouchedListener> listeners = new ArrayList<ViewWasTouchedListener>();

...

public void setWasTouchedListener(ViewWasTouchedListener listener){
    listeners.add(listener);
}

在您的触摸事件中

for (ViewWasTouchedListener listener:listeners){
   listener.onViewTouched(x,y);
}

在您的活动中:

public class Test extends Activity implements ViewWasTouchedListener {

...

@Override
public void onCreate(Bundle savedInstanceState) 
{
    ...
    MyExtendedView customView = (MyExtendedView)findViewById(R.id.myCustomeView);
    customView.setWasTouchedListener(this);
    ...
}

public void onViewTouched(float x, float y){
   // do whatever you need to do
}

您可以通过添加removeViewWasTouchedListener并检查您是否在setViewWasTouchedListener中添加两次相同的侦听器来改进视图类。