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
Post a Comment