我想让我的波顿动画在片段上运动,但是加载动画时出现错误

时间:2018-09-12 19:36:56

标签: android-studio android-fragments animation

我想让我的应用程序屏幕上的屁股从按钮上进行动画设置,使我知道如何在一个活动中进行操作,但是在片段中却遇到了问题。

有一个错误,说这不能应用于片段,当我放置获取上下文时,它不会动画。请告诉我哪里错了。

这是我的主要片段代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view =inflater.inflate(R.layout.fragment_main, container, false);
    samabtn=(Button) view.findViewById(R.id.samabtn);
    samabtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity mainActivity=(MainActivity)getActivity();
            mainActivity.loadParrablesFragment();
        }
    });
    Lovebtn=(Button) view.findViewById(R.id.Lovebtn);
    Lovebtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity mainActivity=(MainActivity)getActivity();
            mainActivity.loadChapter2Fragment();


        }
    });
    Adventurebtn=(Button) view.findViewById(R.id.Adventurebtn);
    Adventurebtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity mainActivity=(MainActivity)getActivity();
            mainActivity.loadAdventureFragmnet();

        }
    });
    menbtn=(Button)view.findViewById(R.id.menbtn);
    frombottom=  AnimationUtils.loadAnimation(this,R.anim.frombottom);
    menbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity mainActivity=(MainActivity)getActivity();
            mainActivity.loadMysteryFragment();

        }
    });

我现在尝试获取上下文,但该错误消失了,但是我想要的动画不起作用

1 个答案:

答案 0 :(得分:0)

我假设您正在谈论的问题发生在此行:

frombottom=  AnimationUtils.loadAnimation(this,R.anim.frombottom);

假设我是对的,问题是loadAnimation()的第一个参数必须是Context。活动是上下文,这就是为什么在活动中进行操作时它可以起作用的原因。但是,片段不是 上下文,因此您不能将this作为第一个参数传递。

在一个Fragment中,获取Context对象的最简单方法是调用getContext(),尽管生命周期中的某些部分会返回null。不过,在onCreateView()内部,这很安全。

所以改写这个:

frombottom=  AnimationUtils.loadAnimation(getContext(), R.anim.frombottom);