I am showing in a fragment, a sequence of three images through a ViewPager, I have added to the fragment a timer TimerTask for the images, occasionally an error is generated that closes the application and refers to the line:
getActivity().runOnUiThread(new Runnable() {
I had done this exercise before but in an Activity and this line was like this:
MainActivity.this.runOnUiThread(new Runnable() {
Next I show the fragment code and two Logcat screens, I support your help.
Fragment_Home
public class Fragment_Home extends Fragment {
//ViewPager
ViewPager viewPager;
CustomSwipeAadapter adapter;
public Fragment_Home() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_home, container, false);
//ViewPager
viewPager = (ViewPager)v.findViewById(R.id.view_pager);
adapter = new CustomSwipeAadapter(getContext());
viewPager.setAdapter(adapter);
Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 3000, 4000);
return v;
}
public class MyTimerTask extends TimerTask {
@Override
public void run() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if(viewPager.getCurrentItem()==0){
viewPager.setCurrentItem(1);
}else if(viewPager.getCurrentItem()==1){
viewPager.setCurrentItem(2);
}else if(viewPager.getCurrentItem()==2){
viewPager.setCurrentItem(0);
}
}
});
}
}
private FragmentManager getSupportFragmentManager() {
return getFragmentManager();
}
}
Images: