Refer to the doc: http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html
I have a button inside the included layout, how can I access the button? I don't know the id! How can I define the OnClickListener...?
Please help...
The id you have with the include tag is assigned to the root View of the included layout.
First get a reference to that View using findViewByid. Then you can call findViewById on that specific View to get a reference to a View inside the layout. So:
View myLayout = findViewById( R.id.cell1 ); // root View id from that link
View myView = myLayout.findViewById( R.id.someinnerview ); // id of a view contained in the included file
All you need is the id of the parent view:
In this example, the LinearLayout
is the parent of the TextView
I want from the included View.
I can now do this:
View view = findViewById(R.id.include_title_layout);
TextView titleTV = (TextView) view.findViewById(R.id.newsTitleTextView);
titleTV.setText("Whatever");
There's a common pitfall with regard to resolving widget IDs when including the same XML layout multiple times. A blog post at http://www.coboltforge.com/2012/05/tech-stuff-layout/ explains exactly that problem and how to solve it!
You do know the id of the include. You can get that complete element, and then get one of its children starting from there.
Actually include
tags include all the elements in your root layout. So you can always access them using findViewById
on your Activity.
Suppose you have a alayout.xml
in which there is a include
layout. Now in one of your activity A,inside onCreate
you declared setContentView(R.layout.alayout)
Now inside your include layout you might have a button with id myBtn
. You can access that inside onCreate
in the same way you could access it if it were in main layout: findViewById(R.id.myBtn)
i think your mean is NavigationView. you can access to inner layout by this way:
NavigationView ngv= (NavigationView) findViewById(R.id.navigation_id);
View innerview = ngv.getHeaderView(0);
TextView user_view= (TextView)innerview.findViewById(R.id.nav_name); //any you need
user_view.setText(user);