老师这个问题怎么弄,viewpager跳转问题

老师这个问题怎么弄,viewpager跳转问题

http://img1.sycdn.imooc.com//climg/5e9a6a440939708715010293.jpg

http://img1.sycdn.imooc.com//climg/5e9a6aee09b3d75d04040357.jpg不管用不用线程都会在:viewPager.setCurrentItem(index%4);这段运行到这段代码的时候崩溃

package com.example.mootaoapp.fragmet;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Handler;
import android.os.Message;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.example.mootaoapp.R;

/**
* A simple {@link Fragment} subclass.
*/
public class IndexFragment extends Fragment {
   private ViewPager2 viewPager;
   private View view;
   private LinearLayout pointers;//指示器
   private int index=1;

   private int[] pager_pic = {R.drawable.header_pic_ad1, R.drawable.header_pic_ad2, R.drawable.header_pic_ad1, R.drawable.header_pic_ad2};

   public IndexFragment() {
       // Required empty public constructor
   }


   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
                            Bundle savedInstanceState) {
       // Inflate the layout for this fragment
       view = inflater.inflate(R.layout.fragment_index, container, false);
       viewPager = view.findViewById(R.id.viewpager);
       pointers = view.findViewById(R.id.pointers);
       viewPager_set();
       return view;


   }
//viewPager相关设置
   public void viewPager_set() {
       final Handler handler=new Handler(){
           @Override
           public void handleMessage(@NonNull Message msg) {
               super.handleMessage(msg);
               viewPager.setCurrentItem(msg.arg1);

           }
       };

       RecyclerView.Adapter adapter = new RecyclerView.Adapter() {
           @NonNull
           @Override
           public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
               View v = LayoutInflater.from(getContext()).inflate(R.layout.viewpager_item, parent, false);
               return new ViewHodler(v);
           }

           @Override
           public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
               ViewHodler viewHodler = (ViewHodler) holder;
               viewHodler.v.setBackgroundResource(pager_pic[position]);

           }

           @Override
           public int getItemCount() {
               return pager_pic.length;
           }
       };
       viewPager.setAdapter(adapter);
       //设置指示器的跳转
       viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
           @Override
           public void onPageSelected(int position) {
               super.onPageSelected(position);
               for (int i = 0; i < pointers.getChildCount(); i++) {
                   ImageView imageView = (ImageView) pointers.getChildAt(i);
                   imageView.setImageResource(R.drawable.unselect);
               }
               ((ImageView) pointers.getChildAt(position)).setImageResource(R.drawable.select);

           }
       });
//开启线程设置自动滑动

       new Thread(){
           @Override
           public void run() {
               super.run();
               while (true) {
                   try {
                       Thread.sleep(2000);

                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
                   viewPager.setCurrentItem(index%4);
                   index++;

                   Message message=new Message();
                   message.what=1;
                   message.arg1=index;
                   handler.sendMessage(message);
               }
           }
       }.start();

   }

   //ViewHodler
   class ViewHodler extends RecyclerView.ViewHolder {
       View v;

       public ViewHodler(@NonNull View itemView) {
           super(itemView);
           this.v = itemView;
       }

   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕雪 2020-04-20 17:02:44

在这里哦

http://img1.sycdn.imooc.com//climg/5e9d652e09b51f8812600587.jpg

好帮手慕雪 2020-04-18 19:22:49

不同版本,ViewPager稍有不同,activity.runOnUiThread(new Runnable() 里放UI相关的内容吧,同学请参见一下教辅资料里的代码。祝:学习愉快

  • 提问者 慕雪2495638 #1
    getActivity().runOnUiThread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } viewPager.setCurrentItem(index%4); index++; } } }); 老师我加上这段就黑屏了
    2020-04-19 08:26:02
  • 好帮手慕雪 回复 提问者 慕雪2495638 #2
    同学有没有增if(thread==null ){的判断。如果还有错,请把报错信息粘贴一下。
    2020-04-20 10:03:26
  • 提问者 慕雪2495638 #3
    thread这个是什么
    2020-04-20 11:49:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师