web-dev-qa-db-ja.com

android-コンテキストからビューを取得する方法?

コンテキストからビューまたはfindViewById()を取得したいですか?または意図から?

ブロードキャストレシーバーで特定のビューに到達しようとしていますが、onReceiveのパラメーターはコンテキストと意図です。

まあ、私にはクラスがあり、その中に私の放送受信機があります。今、私はそれから放送受信機を分離しようとしていますが、分離した放送受信機クラスからクラスのビューと通信できるようにする方法が必要です。

ありがとう。

50
reika

たとえば、任意のtextViewを見つけることができます。

TextView textView = (TextView) ((Activity) context).findViewById(R.id.textView1);
60
KuzyaTheBrownie

コンテキストから始めて、関連付けられたアクティビティのルートビューを取得できます。

View rootView = ((Activity)_context).Window.DecorView.FindViewById(Android.Resource.Id.Content);

Raw Androidでは次のようになります。

View rootView = ((Activity)mContext).getWindow().getDecorView().findViewById(Android.R.id.content)

次に、この上でfindViewByIdを呼び出すだけです

View v = rootView.findViewById(R.id.your_view_id);
55
samis

ブロードキャストレシーバーでは、インフレーションを介してXMLリソースからルートレイアウトにアクセスし、findViewByid()を使用してこのルートレイアウトからすべてのビューを検索できます。

View view = View.inflate(context, R.layout.ROOT_LAYOUT, null);

これで、「view」経由でビューにアクセスし、ビュータイプにキャストできます。

myImage = (ImageView) view.findViewById(R.id.my_image);
7
Marcin S.

最初にこれを使用します:

LayoutInflater inflater = (LayoutInflater) Read_file.this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

Read file is current activity in which you want your context.

View layout = inflater.inflate(R.layout.your_layout_name,(ViewGroup)findViewById(R.id.layout_name_id));

これを使用して、レイアウト内の任意の要素を見つけることができます。

ImageView myImage = (ImageView) layout.findViewById(R.id.my_image);
1
Fahad Anjum