fragment結合viewpager會緩存fragment在內存,除非退出程序,想要不退出程序情況下刷新fragment頁面,就要刪除緩存;
public class MainActivity extends AppCompatActivity { ViewPagerAdapter2 viewPagerAdapter2; ViewPager viewPager; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); s3 = 1; viewPager = findViewById(R.id.viewPager); viewPagerAdapter2 = new ViewPagerAdapter2(getSupportFragmentManager()); viewPager.setAdapter(viewPagerAdapter2); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("點擊"); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment childFragment :fragments) { transaction.remove(childFragment); } transaction.commit(); } viewPagerAdapter2 = new ViewPagerAdapter2(getSupportFragmentManager()); viewPager.setAdapter(viewPagerAdapter2); viewPagerAdapter2.notifyDataSetChanged(); } }); } }
public class ViewPagerAdapter2 extends FragmentPagerAdapter { public ViewPagerAdapter2(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { System.out.println("輸出item"+position); switch(position) { case 0: return new BlankFragment(); case 1: return new BlankFragment2(); } return null; } @Override public int getCount() { return array.length; } @Override public CharSequence getPageTitle(int position) { return array[position]; } public int getItemPosition(Object object) { // TODO Auto-generated method stub System.out.println("返回位置"); return PagerAdapter.POSITION_NONE; } }