android - java.lang.IllegalArgumentException: ViewPager does not have a PagerAdapter set -
**i trying add swipe tab dynamically, while adding tab setupwithviewpager shows below exception in tablayout.setupwithviewpager(viewpager)
03-17 15:01:24.593 3683-3718/info.androidhive.materialtabs i/openglrenderer: initialized egl, version 1.4 03-17 15:01:24.611 3683-3718/info.androidhive.materialtabs d/openglrenderer: enabling debug mode 0 03-17 15:01:24.691 3683-3683/info.androidhive.materialtabs i/timeline: timeline: activity_idle id: android.os.binderproxy@3feea074 time:133990912 03-17 15:01:26.807 3683-3683/info.androidhive.materialtabs i/timeline: timeline: activity_launch_request id:info.androidhive.materialtabs time:133993028 03-17 15:01:26.854 3683-3683/info.androidhive.materialtabs d/action: called in setviewpager 03-17 15:01:26.857 3683-3683/info.androidhive.materialtabs d/androidruntime: shutting down vm 03-17 15:01:26.862 3683-3683/info.androidhive.materialtabs e/androidruntime: fatal exception: main process: info.androidhive.materialtabs, pid: 3683 java.lang.runtimeexception: unable start activity componentinfo{info.androidhive.materialtabs/info.androidhive.materialtabs.activity.customviewtabsactivity}: java.lang.illegalargumentexception: viewpager not have pageradapter set @ android.app.activitythread.performlaunchactivity(activitythread.java:2379) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2442) @ android.app.activitythread.access$800(activitythread.java:156) @ android.app.activitythread$h.handlemessage(activitythread.java:1351) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:211) @ android.app.activitythread.main(activitythread.java:5371) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:945) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:740) caused by: java.lang.illegalargumentexception: viewpager not have pageradapter set @ android.support.design.widget.tablayout.setupwithviewpager(tablayout.java:591) @ info.androidhive.materialtabs.activity.customviewtabsactivity.oncreate(customviewtabsactivity.java:66) @ android.app.activity.performcreate(activity.java:5990) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1106) @ android.app.activitythread.performlaunchactivity(activitythread.java:2332) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2442) @ android.app.activitythread.access$800(activitythread.java:156) @ android.app.activitythread$h.handlemessage(activitythread.java:1351) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:211) @ android.app.activitythread.main(activitythread.java:5371) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:945) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:740)
**
import java.sql.connection; import java.sql.resultset; import java.sql.statement; import java.util.arraylist; import java.util.iterator; import java.util.list; public class customviewtabsactivity extends appcompatactivity { private toolbar toolbar; private viewpager viewpager; private tablayout tablayout; arraylist<string> tabledata = null; arraylist<arraylist> tablist=new arraylist< arraylist>(); //private arraylist<string> tablist = new arraylist<>(); connection connection; statement statement; connectionclass connectionclass; @override protected void oncreate(bundle saveinstancestate) { super.oncreate(saveinstancestate); setcontentview(r.layout.custom_swipetab); toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); getsupportactionbar().sethomebuttonenabled(true); // viewpager viewpager; viewpager = (viewpager)findviewbyid(r.id.viewpager); setupviewpager(viewpager); tablayout = (tablayout) findviewbyid(r.id.tabs); tablayout.setupwithviewpager(viewpager);---->>(here got exceptions) try { connection = connectionclass.conn(); log.d("data", "connected" + connection);`` string tabquery = "select attribute_name tbl_prd_attributes screen_id=637 , entry_mode='header' "; statement = connection.createstatement(); log.d("action", "statement created"); resultset resultset = null; resultset = statement.executequery(tabquery); while (resultset.next()) { tabledata = new arraylist<string>(); tabledata.add(resultset.getstring(1)); tablist.add(tabledata); // tablayout.setupwithviewpager(viewpager); } log.d("data","in tablist"+tablist); setupviewpager(viewpager); } catch (exception e) { log.e("error", "connection error" + e.getmessage()); } } private void setupviewpager(viewpager viewpager) { log.d("action","called in setviewpager"); viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager()); iterator iterator = tablist.iterator(); arraylist<string> getdata = null; while (iterator.hasnext()) { getdata = (arraylist) iterator.next(); log.d("action","in while"); (int k = 0; k < getdata.size(); k++) { string tableviewer = getdata.get(k); adapter.addfrag(new onefragment(), "one"); adapter.addfrag(new tenfragment(), tableviewer); log.d("action", "in tabcreation"); log.d("data","created tab is"+tableviewer); viewpager.setadapter(adapter); } } } public class viewpageradapter extends fragmentstatepageradapter { private final list<fragment> mfragmentlist = new arraylist<>(); private final list<string> mfragmenttitlelist = new arraylist<>(); public viewpageradapter(fragmentmanager manager) { super(getsupportfragmentmanager()); } public fragment getitem(int position) { return mfragmentlist.get(position); } public int getcount() { return mfragmentlist.size(); } public void addfrag(fragment fragment, string title) { mfragmentlist.add(fragment); log.d("data", "fragmentlist" + mfragmentlist); mfragmenttitlelist.add(title); log.d("data", "fragmenttitlelist" + mfragmenttitlelist); } @override public charsequence getpagetitle(int position) { return mfragmenttitlelist.get(position); } } }
move tablayout.setupwithviewpager(viewpager)
below second call of setupviewpager(viewpager)
, after tabledata
has been added. reason:
you calling setupviewpager(viewpager)
before add tabledata
tablist
, when trying iterate on it, iterator
empty , never call viewpager.setadapter(adapter)
, why getting error.
Comments
Post a Comment