1
我有一個包含自定義視圖和多個按鈕的活動。將數據從自定義視圖發送到父活動
現在,如果點擊了視圖,我在覆蓋onTouchEvent的視圖類中處理它。
但是,根據用戶完全點擊的位置,我可能想要更改父活動中按鈕中包含的文本。
換句話說:我如何讓父活動從我的自定義視圖中接收數據?
我有一個包含自定義視圖和多個按鈕的活動。將數據從自定義視圖發送到父活動
現在,如果點擊了視圖,我在覆蓋onTouchEvent的視圖類中處理它。
但是,根據用戶完全點擊的位置,我可能想要更改父活動中按鈕中包含的文本。
換句話說:我如何讓父活動從我的自定義視圖中接收數據?
定義一個接口並使用回調讓活動知道該視圖已被觸摸。
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中添加兩次相同的偵聽器。
這正是我想要達到的目標!謝謝! – Radical
不客氣。 – Simon