Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何实现定时器自动进入图像幻灯片内的片段?_Android_Android Fragments_Android Adapter_Timertask - Fatal编程技术网

Android 如何实现定时器自动进入图像幻灯片内的片段?

Android 如何实现定时器自动进入图像幻灯片内的片段?,android,android-fragments,android-adapter,timertask,Android,Android Fragments,Android Adapter,Timertask,如何实现定时器自动进入图像幻灯片内的片段? 我使用了Fragment和CustomSwipeAdapter,我不知道把计时器放在哪里使图像自动滑动。它是在片段内还是在CustomSwipe Adpater中 这是针对片段的: public class PrimaryFragment extends Fragment { public static ViewPager viewPager1; CustomSwipeAdapter adapter; public Pri

如何实现定时器自动进入图像幻灯片内的片段? 我使用了Fragment和CustomSwipeAdapter,我不知道把计时器放在哪里使图像自动滑动。它是在片段内还是在CustomSwipe Adpater中

这是针对片段的:

public class PrimaryFragment extends Fragment {


    public static ViewPager viewPager1;

    CustomSwipeAdapter adapter;
    public PrimaryFragment() {
        // Required empty public constructor

    }

   private String[] health ={"Abdominal Disorder","Abrasion","Aches","Anxiety","Bruises","Burns or Scalds","Constipation","Coughs" +
            "","Cramps","Diarrhea","Dizziness","Dyspepsia","Epilepsy","Fever","Gastric Problem" +
            "","High Blood Pressure","Hydrophobia","Tonsillitis"};


    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);



    }

    @Nullable

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       // return inflater.inflate(R.layout.primary_layout,null);
        //((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("First Aid and Survival Tips");



        View rootView = inflater.inflate(R.layout.primary_layout,container,false);

        viewPager1 = (ViewPager) rootView.findViewById(R.id.view_pager);
        adapter = new CustomSwipeAdapter(this.getActivity());
        viewPager1.setAdapter(adapter);


        ListView lv = (ListView) rootView.findViewById(R.id.oneListView);
        ArrayAdapter adapter = new ArrayAdapter(this.getActivity(),android.R.layout.simple_list_item_1,health);
        lv.setAdapter(adapter);


        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // Toast.makeText(getActivity(),health[position],Toast.LENGTH_SHORT).show();
                if(position == 0) {
                    Intent intent = new Intent(view.getContext(), abdominal.class);
                    startActivity(intent);
                }
                if(position == 1) {
                    Intent intent = new Intent(view.getContext(), abrasion.class);
                    startActivity(intent);
                }
                if(position == 2) {
                    Intent intent = new Intent(view.getContext(), aches.class);
                    startActivity(intent);
                }
                if(position == 3) {
                    Intent intent = new Intent(view.getContext(), allergies.class);
                    startActivity(intent);
                }
                if(position == 4) {
                    Intent intent = new Intent(view.getContext(), bruises.class);
                    startActivity(intent);
                }
                if(position == 5) {
                    Intent intent = new Intent(view.getContext(), burns.class);
                    startActivity(intent);
                }
                if(position == 6) {
                    Intent intent = new Intent(view.getContext(), constipation.class);
                    startActivity(intent);
                }
                if(position == 7) {
                    Intent intent = new Intent(view.getContext(), coughs.class);
                    startActivity(intent);
                }
                if(position == 8) {
                    Intent intent = new Intent(view.getContext(), cramps.class);
                    startActivity(intent);
                }
                if(position == 9) {
                    Intent intent = new Intent(view.getContext(), diarrhea.class);
                    startActivity(intent);
                }
               // if(position == 10) {
               //     Intent intent = new Intent(view.getContext(), digestive.class);
                 //   startActivity(intent);
              //  }
                if(position == 10) {
                    Intent intent = new Intent(view.getContext(), dizziness.class);
                    startActivity(intent);
                }
                if(position == 11) {
                    Intent intent = new Intent(view.getContext(), dyspepsia.class);
                    startActivity(intent);
                }
                if(position == 12) {
                    Intent intent = new Intent(view.getContext(), epilepsy.class);
                    startActivity(intent);
                }
                if(position == 13) {
                    Intent intent = new Intent(view.getContext(), fever.class);
                    startActivity(intent);
                }
                if(position == 14) {
                    Intent intent = new Intent(view.getContext(), gastric.class);
                    startActivity(intent);
                }
                if(position == 15) {
                    Intent intent = new Intent(view.getContext(), highblood.class);
                    startActivity(intent);
                }
                if(position == 16) {
                    Intent intent = new Intent(view.getContext(), hydrophobia.class);
                    startActivity(intent);
                }
                if(position == 17) {
                    Intent intent = new Intent(view.getContext(), tonsilitis.class);
                    startActivity(intent);
                }
            }
        });
        return rootView;
    }}

您可以在
片段中启动定时任务。
尚未验证此代码,但它应该可以正常工作。
创建您的刷卡任务:

final long delay = 2000;
Handler handler = new Handler();
private int[] pagerIndex = {-1};
private Runnable swipeTask = new Runnable() {
    @Override
    public void run() {

        pagerIndex[0]++;
        if (pagerIndex[0] >= adapter.getCount()) {
            pagerIndex[0] = 0;
        }

        viewPager.setCurrentItem(pagerIndex[0]);
        handler.postDelayed(this, delay);
    }
};
在片段的
onCreateView()
中,在设置了viewPager、适配器等之后

task.run();
在片段的onCreateView()中调用autoScroll(),在设置视图寻呼机适配器之后

如果必须在片段之间进行更改,请记住在片段的onDetach()方法中取消计时器,如下所示,以避免出现任何问题

希望这能帮助别人。因为我个人在移动到另一个片段和返回到同一个片段时遇到了滑动问题,因为在移动到另一个片段之前我没有取消计时器


我用过图书馆。这里的这个要小心内存泄漏,处理图像总是很困难的。这一定是我见过的最可怕的字符串数组分配:other postdayed有一个错误。无法解析方法(匿名java.lang.Runnable,long)@Candy083处理程序应该是android.os.Handler,而不是java.util.logging.Handler
task.run();
Handler h = new Handler();
int delay = 15000; //1 second
Runnable runnable;
private int[] pagerIndex = {-1};
@Override
public void onStart() {


    h.postDelayed(new Runnable() {
        public void run() {
           pagerIndex[0]++;
    if (pagerIndex[0] >= adapter.getCount()) {
        pagerIndex[0] = 0;
    }

    viewPager.setCurrentItem(pagerIndex[0]);
            runnable=this;

            h.postDelayed(runnable, delay);
        }
    }
    , delay);

    super.onStart();
}
private int currentPage = 0;
final long DELAY = 1000;//delay in milliseconds before auto sliding starts.
final long PERIOD = 4000; //time in milliseconds between sliding.

private void autoScroll(){
    final Handler handler = new Handler();
    final Runnable Update = new Runnable() {
        public void run() {
            if (currentPage == YourImageList.size()) {
                currentPage = 0;
            }
            viewPager.setCurrentItem(currentPage++, true);
        }
    };

    timer = new Timer(); // creating a new thread
    timer .schedule(new TimerTask() { // task to be scheduled

        @Override
        public void run() {
            handler.post(Update);
        }
    }, DELAY_MS, PERIOD_MS);
}
viewPager.setAdapter(ViewPagerAdapter)
autoScroll()
 @Override
public void onDetach() {
    super.onDetach();
    if(timer != null) {
       timer.cancel();
        timer = null;
    }
}