Reputation: 769
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...
Upvotes: 53
Views: 52831
Reputation: 261
works for me in java
<include
android:id="@+id/layout_infoProfile"
layout="@layout/user_info_doctor_profile_layout"
/>
preferences = mContext.getSharedPreferences(MyConstant.MY_SHARED_PREF,Context.MODE_PRIVATE);
View view = mView.findViewById(R.id.layout_infoProfile);
((TextView)view.findViewById(R.id.tv_name)).setText(preferences.getString(MyConstant.ROLE,MyConstant.NO_VALUE));
Upvotes: 0
Reputation: 3159
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);
Upvotes: 1
Reputation: 27255
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");
Upvotes: 23
Reputation: 2778
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)
Upvotes: 3
Reputation: 64419
You do know the id of the include. You can get that complete element, and then get one of its children starting from there.
Upvotes: 3
Reputation: 11620
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
Upvotes: 91