我有一个活动和三个片段。第一个片段是一个菜单,当从该菜单中选择一些东西时,另一个片段就会进入。该片段是一个数据列表,用户可以通过简单地点击"添加" ActionBar中的按钮,导航到ViewPager中片段的集合(3-4)。
我想要做的是在启动新片段时添加滑动动画。 实际上我是用setCustomAnimations方法做的,并且它第一次正如我想要的那样工作。它在菜单中滑动,然后是带有列表数据的片段,然后是ViewPager。然而,当我回到菜单并尝试重新做同样的事情时,它并没有像以前一样工作。 ViewPager中的片段根本不会加载。
这是我的BaseMenuActivity
private void openFragment(int pageId) {
switch (pageId) {
case PAGE_MENU:
mFragment = new FragmentMenu();
currentFragment = 0;
break;
case PAGE_MENU_ITEM1:
mFragment = new FragmentMenuItem1();
currentFragment = 1;
break;
case PAGE_MENU_ITEM2:
mFragment = new FragmentMenuItem2();
currentFragment = 2;
break;
}
if (mFragment != null) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (currentFragment != 0) {
ft.setCustomAnimations(R.anim.enter_anim, R.anim.exit_anim);
}
ft.replace(mainLayout.getId(), mFragment).commit();
}
}
,这是我的VerticalViewPager片段采取行动的FragmentBaseExecution
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_risk_evaluation_form, null);
activity = (BaseMenuActivity) this.getActivity();
actionBar = getActivity().getActionBar();
View actionBarView = actionBar.getCustomView();
txtPageName = ((TextView) actionBarView.findViewById(R.id.txtPageName_actionBar));
txtTime = ((TextView) actionBarView.findViewById(R.id.txtTime_actionBar));
txtPageNumber = ((TextView) actionBarView.findViewById(R.id.txtPageNumber_actionBar));
fragments = getFragments();
PagerAdapter pageAdapter = new PagerAdapter(activity.getSupportFragmentManager(), fragments);
pager = (VerticalViewPager) rootView.findViewById(R.id.ViewPager);
pager.setAdapter(pageAdapter);
final View.OnClickListener pageButtonListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
pageIndex = pager.getCurrentItem();
int id = view.getId();
if (id == btnNext.getId()) {
openNextPage();
} else if (id == btnBack.getId()) {
openPreviousPage();
}
}
};
btnNext.setOnClickListener(pageButtonListener);
btnBack.setOnClickListener(pageButtonListener);
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
pageIndex = i;
}
@Override
public void onPageSelected(int i) {
if (i > pageIndex) {
controlPage();
} else
pageChanged();
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
prepareActionBar();
return rootView;
}
private void openNextPage() {
controlPage();
}
private void openPreviousPage() {
pager.setCurrentItem(pageIndex - 1, true);
}
private void controlPage() {
((FragmentBaseEvaluation) fragments.get(pageIndex)).checkItems(this);
}
private void pageChanged() {
pageIndex = pager.getCurrentItem();
int lastPage = fragments.size() - 1;
int currentPage = pageIndex + 1;
txtPageNumber.setText(currentPage + " / " + lastPage);
if (currentPage == lastPage) {
btnNext.setText("Finish");
lastPageHasCome = true;
} else {
btnNext.setText("Next");
lastPageHasCome = false;
}
}
private List<Fragment> getFragments() {
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(new Fragment1());
fList.add(new Fragment2());
fList.add(new Fragment3());
return fList;
}
@Override
public void onInformForItems(Fragment source, boolean isDone) {
Log.e("Checked", isDone + "");
if (isDone) {
//The page is fully filled.
pager.setCurrentItem(pageIndex + 1, true);
} else {
pager.setCurrentItem(pageIndex, true);
}
pageChanged();
}
private void prepareActionBar() {
ActionBar actionBar = nursingExecutionActivity.getActionBar();
txtPageName = ((TextView) actionBar.getCustomView().findViewById(R.id.txtPageName_actionBar));
txtTime = ((TextView) actionBar.getCustomView().findViewById(R.id.txtTime_actionBar));
txtPageNumber = ((TextView) actionBar.getCustomView().findViewById(R.id.txtPageNumber_actionBar));
txtPageNumber.setVisibility(View.VISIBLE);
txtTime.setVisibility(View.VISIBLE);
btnBack.setVisibility(View.VISIBLE);
btnNext.setVisibility(View.VISIBLE);
Date date = new Date();
txtPageNumber.setText(pager.getCurrentItem() + 1 + " / " + (fragments.size() - 1));
SimpleDateFormat simpleDate = new SimpleDateFormat("HH:mm");
String mDate = simpleDate.format(date);
txtTime.setText(getResources().getString(R.string.time) + mDate);
txtPageName.setText("Page Name");
}
对我来说这是一个非常奇怪的问题。你有什么建议会导致这个问题,或者我是否实施错误。