我想让我的应用程序屏幕上的屁股从按钮上进行动画设置,使我知道如何在一个活动中进行操作,但是在片段中却遇到了问题。
有一个错误,说这不能应用于片段,当我放置获取上下文时,它不会动画。请告诉我哪里错了。
这是我的主要片段代码:
@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();
}
});
我现在尝试获取上下文,但该错误消失了,但是我想要的动画不起作用
答案 0 :(得分:0)
我假设您正在谈论的问题发生在此行:
frombottom= AnimationUtils.loadAnimation(this,R.anim.frombottom);
假设我是对的,问题是loadAnimation()
的第一个参数必须是Context
。活动是上下文,这就是为什么在活动中进行操作时它可以起作用的原因。但是,片段不是 上下文,因此您不能将this
作为第一个参数传递。
在一个Fragment中,获取Context对象的最简单方法是调用getContext()
,尽管生命周期中的某些部分会返回null
。不过,在onCreateView()
内部,这很安全。
所以改写这个:
frombottom= AnimationUtils.loadAnimation(getContext(), R.anim.frombottom);