package com.novelbook.android; import android.content.Intent; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import com.ixiaow.multilayout.MultiLayout; import com.novelbook.android.Fragments.BasicFragment; import com.novelbook.android.Fragments.Fragment_booklist; import com.novelbook.android.Fragments.Fragment_shudan_list; import com.flyco.tablayout.SlidingTabLayout; import com.novelbook.android.bean.ProgressType; import com.novelbook.android.utils.Constants; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import static com.novelbook.android.utils.Constants.lstNt; import static com.novelbook.android.utils.Constants.lstProgress; import static com.novelbook.android.utils.Constants.lstSex; public class Activity_cate_books extends Activity_base { public static final String TAG=Activity_cate_books.class.getSimpleName(); public static String EXTRNAME="catename"; @BindView(R.id.viewpager) ViewPager mViewpager; @BindView(R.id.tab_layout) SlidingTabLayout tabLayout; @BindView(R.id.topic_layout) MultiLayout topic_layout; String cate=""; private ArrayList mFragments; ArrayList mList; String[] mTitle; private int tabPos; @Override public int getLayoutRes() { return R.layout.activity_cate_books; } @Override protected void initViews() { creatToolbar(); initTabs2(); } @Override protected void setTitle() { cate = getIntent().getStringExtra(EXTRNAME); this.setTitle(cate); } @Override protected void initData() { } @Override public void fillData() { } //---------tabs------------- void initTabs() { List lstType = new ArrayList() ;//Arrays.asList(lstProgress); for(ProgressType progressType : Constants.lstProgressType){ lstType.add(progressType.getName()); } topic_layout.initTabNames(lstType) ; topic_layout.setOnTabSelectListener(new MultiLayout.OnTabSelectListener() { @Override public void select(TextView textView, int i, int i1) { Log.d(TAG, String.format("select: text %s,i %s i1 %s ",textView.getText(),i,i1)); tabPos = i1; tabChanged(); } }); } void initTabs2() { if(Constants.lstProgressType==null){ return; } if (mFragments == null ) { mFragments = new ArrayList(); } mFragments.clear(); for(ProgressType progressType : Constants.lstProgressType) { mFragments.add(Fragment_booklist.newInstance(cate, progressType.getId())); } Log.d(TAG, "initial fragments in tabs "); Log.d(TAG, "set viewPager adapter "); // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text @Override public CharSequence getPageTitle(int position) { return Constants.lstProgressType.get(position).getName(); } }; mViewpager.setAdapter(mAdapter); mViewpager.setOffscreenPageLimit( Constants.lstProgressType.size()+1); tabLayout.setViewPager(mViewpager); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); mViewpager.setCurrentItem(0); } int tmp=0; private void tabChanged() { Log.d(TAG, String.format("tabChanged: to load data tmp %s" , tmp )); tmp++; if(lstSex==null) return; if (mFragments == null ) { mFragments = new ArrayList(); } mFragments.clear(); mFragments.add(Fragment_booklist.newInstance(cate, Constants.lstProgressType.get(tabPos).getId())); Log.d(TAG, "initial fragments in tabs "); Log.d(TAG, "set viewPager adapter "); // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text @Override public CharSequence getPageTitle(int position) { return mTitle[position]; } }; mViewpager.setAdapter(mAdapter); mViewpager.setOffscreenPageLimit(2); // tabLayout.setViewPager(mViewpager); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); mViewpager.setCurrentItem(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.booksearch, menu); return true; } private void creatToolbar() { setSupportActionBar(toolbar); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int menuItemId = item.getItemId(); if(menuItemId==R.id.menuSearch){ Intent intent = new Intent(Activity_cate_books.this, Activity_Search.class); startActivity(intent); } return true; } }); } }