2010-06-30 32 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

相关问题