2013-01-01 18 views
11

View.getRoot()Viewを返すので、getResourceName(View.getId())を使用すると、どちらがルートビューであるかを簡単に把握できます。Android:親ビューのIDを取得するには?

...私はそれも親であるViewを返しますが、実際には非常に有用なメソッド/フィールドがほとんどないと思われるViewParentのインスタンスを返します。それは吸う。

親のIDを知る方法はありますか?私はViewの親もViewだと信じているので、mIDフィールドを持っているはずです。

私は本当になぜGoogleがしなかったのだろうかView.getParent()Viewを返します。 View以外のものが親になる可能性があり、わかっている限り、Viewとそのサブクラスに限定されています。

+0

View.getId()の戻り名前を行う。のgetName()retunをビュータイプの名前 –

答えて

18

ViewParentは、子を実装できるすべてのビューの単なるインタフェースです。あなたが戻ったクラスのほとんどは、LinearLayoutまたはRelativeLayoutのようなViewGroupのインスタンスになります。私はあなたが "名前"の意味を正確には分かっていませんが、クラス名を取得したい場合は、いつものようにそうすることができます:view.getParent().getClass().getName()

+0

ありがとう、私はより明確に私の投稿を更新します。 – Quv

+7

IDを取得したい場合は、最初に 'ViewGroup'にキャストする必要があります。 'ViewRootImpl'でもかまいませんので、100%安全ではないことに注意してください。だから '((ViewGroup)view.getParent())。getId()' – dmon

5

親が必ずしもViewないdocs状態:

公共最終ViewParentのgetParent()

追加されたAPIレベル1には、このビューの親を取得します。 親はViewParentであり、必ずしもViewではありません。

このビューの親を返します。

ViewParentのすべての実装はViewから継承します。 ViewParentインターフェイスを使用して、親をViewから切り離すように設計する必要がありますが、SDKのすべての実装はビューです。

3

最初にキャストしてみてください。あなたがのIDを取得しようとしているビューの親がのTableRowある場合たとえば、[表示およびView.getClass()の

((TableRow)View.getParent()).getID() 
関連する問題