I am reading Tablayout with ViewPager android Tutorial, the attached code works perfect.
But I wish to create the UI element programmatically then I no need to use xml layout.
So I changed code as below:
public class MainActivity extends AppCompatActivity {
String TAG = "MyExam";
ViewPager mViewPager;
TabLayout mTabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
initControl();
//mViewPager = (ViewPager) findViewById(R.id.view_pager);
//mTabLayout = (TabLayout) findViewById(R.id.tab_layout);
FragmentManager manager=getSupportFragmentManager();
PagerAdapter adapter=new PagerAdapter(manager);
mViewPager.setAdapter(adapter);
mTabLayout.setupWithViewPager(mViewPager);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.setTabsFromPagerAdapter(adapter);
}
public void initControl() {
RelativeLayout rl = new RelativeLayout(this);
mTabLayout = new TabLayout(this);
mViewPager = new ViewPager(this);
rl.addView(mTabLayout);
rl.addView(mViewPager);
setContentView(rl);
}
}
But it seems doesn't work.
08-10 18:54:40.979 3702 3702 E AndroidRuntime: FATAL EXCEPTION: main
08-10 18:54:40.979 3702 3702 E AndroidRuntime: Process: roy.tablayoutwithviewpager, PID: 3702
08-10 18:54:40.979 3702 3702 E AndroidRuntime: android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.content.res.Resources.getResourceName(Resources.java:2238)
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
08-10 18:54:40.979 3702 3702 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
Not sure if it's a limitation from support library.