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;
}