2

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.

beetlej
  • 1,841
  • 4
  • 13
  • 27

0 Answers0