Android技术问题:SectionsPageAdapter未被赋值
解决SectionsPageAdapter未被赋值的问题
嘿,我瞅见你碰到SectionsPageAdapter没赋值的问题了——你只是声明了这个变量,但还没给它创建实例,这肯定会导致后续调用的时候出问题呀。咱们一步步来搞定它:
第一步:确保你有完整的SectionsPageAdapter类
如果还没创建这个类,先写一个继承自FragmentPagerAdapter的适配器,用来管理你的页面Fragment:
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; import java.util.List; public class SectionsPageAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public SectionsPageAdapter(FragmentManager fm) { super(fm); } // 添加Fragment和对应标题的方法 public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } }
第二步:在MainActivity中初始化并绑定适配器
回到你的MainActivity,在onCreate方法里给mSectionsPageAdapter创建实例,同时绑定ViewPager和TabLayout:
package com.example.me.echoboard; import android.support.design.widget.TabLayout; import android.support.v7.app.AppCompatActivity; import android.support.v4.view.ViewPager; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private SectionsPageAdapter mSectionsPageAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 关键:初始化SectionsPageAdapter实例 mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager()); // 获取ViewPager并设置适配器 mViewPager = findViewById(R.id.viewpager); setupViewPager(mViewPager); // 关联TabLayout和ViewPager TabLayout tabLayout = findViewById(R.id.tabs); tabLayout.setupWithViewPager(mViewPager); } // 给适配器添加你的Fragment和标题 private void setupViewPager(ViewPager viewPager) { // 替换成你自己的Fragment类和标题 mSectionsPageAdapter.addFragment(new YourFirstTabFragment(), "首页"); mSectionsPageAdapter.addFragment(new YourSecondTabFragment(), "我的"); viewPager.setAdapter(mSectionsPageAdapter); } }
问题核心解释
你之前的代码只做了private SectionsPageAdapter mSectionsPageAdapter;变量声明,但没有通过new SectionsPageAdapter(...)创建实例,导致变量一直是null。补上实例化的代码,再把你的Fragment添加到适配器里,就能正常实现Tab页切换的功能啦。
内容的提问来源于stack exchange,提问作者Jon Goe
相关产品推荐
相关产品推荐

