Работа над простой анимацией во фрагментах.У меня есть три фрагмента, в которых я должен анимировать представления внутри фрагмента, но проблема, с которой я сейчас сталкиваюсь, заключается в том, что анимация не работает во втором фрагменте, а когда я снова посещаю фрагмент, анимация также не работает.
Класс адаптера
public class MyPageAdapter extends FragmentPagerAdapter {
private final int NUM_ITEMS = 3;
Context mContext;
public MyPageAdapter(FragmentManager fm, Context mContext) {
super(fm);
this.mContext = mContext;
}
public int getCount() {
return NUM_ITEMS;
}
public Fragment getItem(int position) {
// MainActivity.updatedposition(position);
if (position == 0)
return SliderOne.newInstance();
else if (position == 1)
return SliderTwo.newInstance();
else if (position == 2)
return SliderThree.newInstance();
return null;
}
}
Активность ползунка
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
public void onPageSelected(int position) {
if (position == 0) {
SliderOne fragment = new SliderOne();
fragment.initAnimation(mContext);
}
else if (position == 1) {
SliderTwo fragment = new SliderTwo();
fragment.initAnimation(mContext);
}
if (position == 2) {
SliderThree fragment = new SliderThree();
fragment.initAnimation(mContext);
}
// Check if this is the page you want.
}
});
Класс фрагмента
public class SliderThree extends Fragment implements PageSelectedAnimation {
ImageView logo;
TextView tv_appname;
CustomTextView tv_msg_2;
Animation smalltobig, nothingtocome, btnanim;
Context mContext;
public static SliderThree newInstance() {
SliderThree fragment = new SliderThree();
return fragment;
}
public SliderThree() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.slider_three, null);
mContext = getActivity();
logo = root.findViewById(R.id.logo);
tv_appname = root.findViewById(R.id.tv_appname);
tv_msg_2 = root.findViewById(R.id.tv_msg_2);
tv_msg_2.setText(Html.fromHtml("Message other users to negotiate<br><p>the perfect trade or deal.Always</p><p>use your best judgement when</p><p>buying or selling.</p>"));
return root;
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void initAnimation(Context mContext) {
smalltobig = AnimationUtils.loadAnimation(mContext, R.anim.smalltobig);
nothingtocome = AnimationUtils.loadAnimation(mContext, R.anim.nothingtocome);
btnanim = AnimationUtils.loadAnimation(mContext, R.anim.nothingtocome);
logo.setAnimation(smalltobig);
logo.setAnimation(nothingtocome);
tv_appname.setAnimation(btnanim);
}
}
интерфейс создан
public interface PageSelectedAnimation {
void initAnimation(Context context);
}
Ошибка: -
java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.view.View android.view.View.findViewById (int)' для пустой ссылки на объект в com.xxx.slider.SliderThree.initAnimation (SliderThree.java:79) на com.xxx.activities.SliderActivity $ 2.onPageSelected (SliderActivity.java:103)
Совместное использование моего кода: Код фрагмента