android - why setOnClickListener not working for inflated button? -


i beginner , inflating button tab_fragment.xml, when trying setonclicklistener button, not working

layoutinflater inflater=getlayoutinflater();     view v=inflater.inflate(r.layout.tab_fragment, (viewgroup) findviewbyid(r.id.line1));     button button= (button) v.findviewbyid(r.id.button);     button.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             viewpageradapter viewpageradapter = new viewpageradapter(getsupportfragmentmanager());             viewpageradapter.addfrag(new tab(), "two");             viewpager.setadapter(viewpageradapter);             tablayout.setupwithviewpager(viewpager);         }     }); 

this tab_fragment.xml:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/line1" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">     <textview     android:layout_margin="50dp"     android:text="some text"     android:layout_width="match_parent"     android:layout_height="wrap_content" />     <button     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="new button"     android:id="@+id/button"     android:layout_gravity="center_horizontal"     />  </linearlayout> 

ok. got it. button part of fragment layout. don't have instance of button in activity class. if want handle button click behaviour on activity class, make activity implement onclicklistener. override onattach() method fragment this:

@override public void onattach(context activity) {     super.onattach(activity);     if(activity instanceof onclicklistener)         mlistener = (onclicklistener) activity;     } }  @override public void ondetach() {     mlistener = null;     super.ondetach(); } 

then on oncreateview method:

@nullable @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle    savedinstancestate) {     view v = inflater.inflate(r.layout.tab_fragment, container, false);     button button = (button) v.findviewbyid(r.id.button);     button.setonclicklistener(mlistener);     return v; } 

also, move logic onclick (from fragment) in onclick() activity below:

override public void onclick(view view) {     switch (view.getid() == r.id.button) {           // move logic here     } } 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -