2010-06-30 81 views

回答

1

瞭解到onDestroy並不保證被調用,您可以在活動onDestroy方法中回調您的視圖。

編輯迴應評論: 您可以通過在佈局中給它一個id並調用findViewById來獲得任何視圖。這裏有一個例子:

Layout.xml(只顯示了最低限度)

<LinearLayout> 
    <com.example.superwidget.DropDownTouchEnabledListView 
    android:id="@+id/special_list_view" /> 
</LinearLayout> 

MyActivity.java(再次,裸最小的,假設適當進口)

@Override 
void onDestroy() { 
    DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view); 
    v.doCallback(with, parameters); 
} 
+0

您能否詳細說明一下。我的自定義視圖類是單獨包的一部分,此視圖在佈局xml中定義。因此,從活動類中調用某些視圖是不可行的。 – bhups 2010-06-30 08:57:07

+2

「因此,從活動類中調用某些視圖是不可行的。」就是這樣。調用'findViewById()',獲取小部件,將其轉換爲適當的類,然後調用它。這就是說,'onDetachedFromWindow()'似乎是對我來說合理的選擇。 – CommonsWare 2010-06-30 09:20:49

+0

@CommonsWare你評論的速度比我可以編輯的更快。順便說一句,謝謝你所做的所有工作。你的書/代碼/答案對我來說是非常寶貴的。 – 2010-06-30 09:26:10

6

如果你想獲得一個回調,而不必過載View.onDetachedFromWindow()方法,您可以使用View.addOnAttachStateChangeListener()方法,該方法將回調監聽器作爲單個參數。

+1

僅適用於API> 12 – 2015-01-28 16:52:43