2012-11-12 85 views
1

我有一個包含自定義視圖和多個按鈕的活動。將數據從自定義視圖發送到父活動

現在,如果點擊了視圖,我在覆蓋onTouchEvent的視圖類中處理它。

但是,根據用戶完全點擊的位置,我可能想要更改父活動中按鈕中包含的文本。

換句話說:我如何讓父活動從我的自定義視圖中接收數據?

回答

1

定義一個接口並使用回調讓活動知道該視圖已被觸摸。

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和checki ng不會在setViewWasTouchedListener中添加兩次相同的偵聽器。

+0

這正是我想要達到的目標!謝謝! – Radical

+0

不客氣。 – Simon

相關問題