【发布时间】:2018-07-23 18:24:44
【问题描述】:
所以我使用 ViewPager 让我的应用程序更快,而不是为每个布局使用 activity。
问题是,在活动中,您可以在 onCreate 中编写代码 它只会在您开始活动时开始,对吧?
但是当你使用 Fragments 和 fragmentPagerAdapter 并为它们使用 ViewPager 时。
您的所有片段都将一起启动它们的 (onCreateView)即使您的 ViewPager 只显示第一个片段!
如果您在片段的开头播放声音或动画,它将在后台开始!
这是我的 fragmentPagerAdapter 类:
public class PagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitle = new ArrayList<>();
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitle.add(title);
}
}
我有这个(第二个片段)我不希望它在没有被选中的情况下开始!
public class GameFragment extends Fragment{
private View gameLayout
private Animation showBtn;
private Button button;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
gameLayout = inflater.inflate(R.layout.game_layout, container, false);
button = gameLayout .findViewById(R.id.button);
// loading my anim xml file
showBtn = AnimationUtils.loadAnimation(getContext(),R.anim.btn_show);
button.startAnimation(showBtn);
loadLevel();
return gameLayout
}
最后这是我有 ViewPager 的活动:
public class ControllerActivity extends AppCompatActivity {
public CustomPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_controller);
viewPager = findViewById(R.id.viewPager);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
adapter.addFragment(new HomeFragment(),"Home");
adapter.addFragment(new GameFragment(),"Game");
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
}
我需要你的帮助来告诉我我在这里的错误以及正确的方法是什么
【问题讨论】:
标签: android android-fragments android-viewpager