Android 将活动更改为片段

Android 将活动更改为片段,android,android-fragments,Android,Android Fragments,此图库活动正常运行。我需要以下活动作为片段。我试图将活动更改为片段,但幻灯片不起作用。请有人帮助我更改 public class Cast_Activity extends Activity { private ViewFlipper myViewFlipper; private float initialXPoint; int[] image = { R.drawable.istill_16,R.drawable.istill_15, R.d

此图库活动正常运行。我需要以下活动作为片段。我试图将活动更改为片段,但幻灯片不起作用。请有人帮助我更改

public class Cast_Activity extends Activity {

    private ViewFlipper myViewFlipper;
    private float initialXPoint;
    int[] image = {  R.drawable.istill_16,R.drawable.istill_15,
            R.drawable.istill_13,R.drawable.istill_14,
            R.drawable.istill_12,R.drawable.istill_11,
            R.drawable.istill_9,R.drawable.istill_10, };

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.slide_show);
    myViewFlipper = (ViewFlipper) findViewById(R.id.myflipper);

    for (int i = 0; i < image.length; i++) {
        ImageView imageView = new ImageView(Cast_Activity.this);
        imageView.setImageResource(image[i]);
        myViewFlipper.addView(imageView);
    }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        initialXPoint = event.getX();
        break;
    case MotionEvent.ACTION_UP:
        float finalx = event.getX();
        if (initialXPoint > finalx) {
            if (myViewFlipper.getDisplayedChild() == image.length)
                break;
            myViewFlipper.showNext();
        } else {
            if (myViewFlipper.getDisplayedChild() == 0)
                break;
            myViewFlipper.showPrevious();
        }
        break;
    }
    return false;
    }
}
这是我改变后的片段

public class Cast_Activity extends Fragment {

    private ViewFlipper myViewFlipper;
    private float initialXPoint;
    int[] image = {  R.drawable.istill_16,R.drawable.istill_15,
            R.drawable.istill_13,R.drawable.istill_14,
            R.drawable.istill_12,R.drawable.istill_11,
            R.drawable.istill_9,R.drawable.istill_10, };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.slide_show, container, false);
    myViewFlipper = (ViewFlipper) ll.findViewById(R.id.myflipper);

    for (int i = 0; i < image.length; i++) {
        ImageView imageView = new ImageView(getActivity());
        imageView.setImageResource(image[i]);
        myViewFlipper.addView(imageView);
    }
    return ll;
    }

    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        initialXPoint = event.getX();
        break;
    case MotionEvent.ACTION_UP:
        float finalx = event.getX();
        if (initialXPoint > finalx) {
            if (myViewFlipper.getDisplayedChild() == image.length)
                break;
            myViewFlipper.showNext();
        } else {
            if (myViewFlipper.getDisplayedChild() == 0)
                break;
            myViewFlipper.showPrevious();
        }
        break;
    }
    return false;
    }
更新代码

public class Cast_Activity extends Fragment {


    private ViewFlipper myViewFlipper;
    private float initialXPoint;
    int[] image = {  R.drawable.istill_16,R.drawable.istill_15,
            R.drawable.istill_13,R.drawable.istill_14,
            R.drawable.istill_12,R.drawable.istill_11,
            R.drawable.istill_9,R.drawable.istill_10, };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

       View v = inflater.inflate(R.layout.slide_show, container, false);
       myViewFlipper = (ViewFlipper) v.findViewById(R.id.myflipper);

   for (int i = 0; i < image.length; i++) {
       ImageView imageView = new ImageView(getActivity());
       imageView.setImageResource(image[i]);
       myViewFlipper.addView(imageView);
   }
   return v;
   }

    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        initialXPoint = event.getX();
        break;
    case MotionEvent.ACTION_UP:
        float finalx = event.getX();
        if (initialXPoint > finalx) {
            if (myViewFlipper.getDisplayedChild() == image.length)
                break;
            myViewFlipper.showNext();
        } else {
            if (myViewFlipper.getDisplayedChild() == 0)
                break;
            myViewFlipper.showPrevious();
        }
        break;
    }
    return false;
    }
改变

LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.slide_show, container, false);
myViewFlipper = (ViewFlipper) ll.findViewById(R.id.myflipper);

并返回v;在onCreateView的末尾

更正代码: 对工作进行必要的更改,以更改布局

最后我找到了答案

myViewFlipper = (ViewFlipper) v.findViewById(R.id.myflipper);

       myViewFlipper.setOnTouchListener(new android.view.View.OnTouchListener() {

           @Override
           public boolean onTouch(View v, MotionEvent event) {
               OnTouchListener(event);
               return true;
           }


      });


   for (int i = 0; i < image.length; i++) {
       ImageView imageView = new ImageView(getActivity());
       imageView.setImageResource(image[i]);
       myViewFlipper.addView(imageView);
        }

   return v;

   }

    public boolean OnTouchListener(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        initialXPoint = event.getX();
        break;
    case MotionEvent.ACTION_UP:
        float finalx = event.getX();
        if (initialXPoint > finalx) {
            if (myViewFlipper.getDisplayedChild() == image.length)
                break;
            myViewFlipper.showNext();


        } else {
            if (myViewFlipper.getDisplayedChild() == 0)
                break;
            myViewFlipper.showPrevious();
        }
        break;
    }
    return false;
    }

@你需要将onTouchListener设置为你的视图翻转器。为什么?LinearLayout是视图的一个子类,他在onCreateView的末尾返回itll…@Selvin,这是错误的。这就是为什么我建议对此进行更改。@Selvin那么OP如何查找LinearLayout?您的解决方案是OK的,即使它更清楚,因为不需要强制转换,OP也不使用ll变量作为LinearLayout。。。但这也没什么大不了的。。。
  @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.slide_show, container, false);
    myViewFlipper = (ViewFlipper) v.findViewById(R.id.myflipper);

for (int i = 0; i < image.length; i++) {
    ImageView imageView = new ImageView(getActivity());
    imageView.setImageResource(image[i]);
    myViewFlipper.addView(imageView);
}
return v;
}
public class Cast_Activity extends Fragment {
public class Cast_Activity extends Fragment implement android.view.View.OnTouchListener{
....
onActivityCreated(){
  myViewFlipper.setOnTouchListener(this);
}
myViewFlipper = (ViewFlipper) v.findViewById(R.id.myflipper);

       myViewFlipper.setOnTouchListener(new android.view.View.OnTouchListener() {

           @Override
           public boolean onTouch(View v, MotionEvent event) {
               OnTouchListener(event);
               return true;
           }


      });


   for (int i = 0; i < image.length; i++) {
       ImageView imageView = new ImageView(getActivity());
       imageView.setImageResource(image[i]);
       myViewFlipper.addView(imageView);
        }

   return v;

   }

    public boolean OnTouchListener(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        initialXPoint = event.getX();
        break;
    case MotionEvent.ACTION_UP:
        float finalx = event.getX();
        if (initialXPoint > finalx) {
            if (myViewFlipper.getDisplayedChild() == image.length)
                break;
            myViewFlipper.showNext();


        } else {
            if (myViewFlipper.getDisplayedChild() == 0)
                break;
            myViewFlipper.showPrevious();
        }
        break;
    }
    return false;
    }