這裏的初始化是我的代碼:最後的局部變量可能沒有在匿名內部類
final Foo myFoo = new Foo(new Inner() {
@Override
callback(){
myFoo.bar();
}
});
(用實際函數名)
final MyArrayAdapter aa = new MyArrayAdapter(new View.OnClickListener() {
@Override
onClick(){
aa.notifyDataSetChanged();
}
});
的Java是給我有關錯誤如何myFoo可能尚未初始化。有沒有什麼辦法解決這一問題?當我構造對象然後改變它時,我可以將回調函數設置爲null,但是我希望有一個更清晰的方法。有任何想法嗎? (如果Foo不是由我寫的,並且沒有公開接口來改變回調以後,那麼這將不起作用)
如果任何人都好奇,在我的具體情況下,Foo是一個ArrayAdapter,並且bar是notifyDataSetChanged()。適配器顯示的內容取決於數組中項目的值,而這些值在點擊時會發生變化。回調是clickListener。
你能剛:
,然後用它像這樣請參閱_this.bar()_或_bar()_? – 2012-04-20 01:33:04
不,我的實際代碼比這個例子更復雜,並且回調在另一個匿名內部類中 – Drew 2012-04-20 02:08:07
爲什麼要重寫notifyDataSetChanged?從API文檔看來,您應該調用myFoo.registerDataSetObserver(new DataSetObserver(){})。 – sharakan 2012-04-20 02:27:01