2011-09-12 12 views
10

Activity-derived以外のクラスからレイアウトのビューにアクセスする方法はありますか?私はAccordionクラスを作成しており、アクティビティのUI要素の一部にアクセスする必要があります。アクティビティのコンテキストをアコーデオンクラスのコンストラクタに渡しますが、findViewById APIはアクティビティクラスからのみ使用できます。私はまた、潜在的なメモリリークのために眉をひそめるように見えるので、私の活動の一例を渡したくない。アクティビティの外からfindViewById()を呼び出す

答えて

1

私はビューの1つのインスタンスをクラスのコンストラクタに渡しました。

2

アクティビティのコンテキストは実際にアクティビティクラスそのものです。このオブジェクトが1つのアクティビティ内にのみ存在すると仮定すると、アクティビティ型のオブジェクトをそのアクティビティに渡すことは安全です。それ以外の場合は、Accordionクラスのリエンジニアリングについて考えてください。

2

ここに参考になるものがあります。

私はこのような何かを試したことがありません。また、メモリリークが発生しないかどうかもわかりません。しかし、それはあなたが尋ねたことを行います: "アクティビティの外からfindViewById()を呼び出す"

15

アクティビティをパラメータとして渡すことができます。

public void initSouthViews(Activity activity) { 
    for (int i = 0; i < southScores_.length; ++i) { 
     southScores_[i] = (EditText) activity.findViewById(10); 
    } 
} 
+0

あなたは正しいです。できます :) – boctulus

関連する問題