setCustomAnimations无法按下后退按钮

时间:2014-10-24 22:01:53

标签: android animation android-fragments

我遇到了这个问题,从片段A到B的转换工作正常但在backPress上却没有。环顾四周,我看到很多这个问题,但没有一个答案似乎帮助我。我一定做错了什么但不知道什么,我会喜欢一些帮助,它让我疯了!

这是我的逻辑:

片段调用片段B:

private void loadNextFragment(WeatherComplete[] weatherDataArrayList) {

FragmentManager fm = getFragmentManager();

MainFragment mf = MainFragment.newInstance();
mf.setVars(choosenCity, weatherDataArrayList);
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in, R.anim.slide_iout, R.anim.slide_in, R.anim.slide_iout);
ft.addToBackStack(null);
ft.replace(R.id.frame, mf);
ft.commit();

}

片段B从菜单调用片段C(设置):

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.action_settings:
                final FragmentManager fm = getActivity().getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.setCustomAnimations(R.anim.slide_in, R.anim.slide_iout, R.anim.slide_in, R.anim.slide_iout);
                ft.replace(R.id.frame, new Settings(), "settings");
                ft.commit();
                break;

我将一个对象数组从片段A传递给片段B,因此当单击片段C上的后退按钮时,它将返回到片段B但是没有可用的对象数组,所以在这种情况下我想要片段C代替回到片段A - 我弹出backStack:

        if (weatherDataObj == null) {

            Log.d(TAG, "WEATHER DATA IS NULL");

            FragmentTransaction ft = getFragmentManager().beginTransaction();
            getFragmentManager().popBackStack();
//            ft.remove(this);
            ft.commit();
        }

1 个答案:

答案 0 :(得分:4)

尝试使用:

ft.setCustomAnimations(R.anim.slide_in, R.anim.slide_iout,
        R.anim.slide_in, R.anim.slide_iout);