В основном у меня есть один массив, который имеет 2 изображения, как будто сейчас, но со временем их будет больше. Изображения с коммутатора массива каждые несколько секунд. я застрял с методом onClick. Конечная цель, когда пользователь нажимает на это изображение, открывается новый класс Activity. Каждое изображение имеет свой собственный класс Activity, поэтому, когда пользователь нажимает на него, оно должно быть направлено на этот конкретный класс.
Мне вчера помогли
public void onClick(View v) {
Intent n = null;
int id = v.getId();
switch (id){
case R.id.someId:
n = new Intent(getActivity(), FragMent1.class);
break;
case R.id.someOtherId:
n = new Intent(getActivity(), FragMent2.class);
break;
}
я могу установить первый оператор case как «R.id.textSwitcher», но вторая проблема. Поскольку я хочу, чтобы изображения анимировались в одном месте, новый R.id... означает новое местоположение, а также новое "mSwitcher1.setOnClickListener(new View.OnClickListener()"
public class Animation extends Fragment implements AnimationListener {
public HomeAnimation(){}
private static boolean flag = false;
Animation anim;
private Handler handler;
public ImageSwitcher mSwitcher,mSwitcher1;
int textToShow[] = {R.drawable.dabangg, R.drawable.car };
int messageCount = textToShow.length;
int currentIndex = -1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.imgswitch, container, false);
mSwitcher = (ImageSwitcher) v.findViewById(R.id.imageSwitcher1);
mSwitcher.setFactory(mFactory);
anim = AnimationUtils.loadAnimation(getActivity(),R.anim.fade_in);
mSwitcher.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent n = null;
int id = v.getId();
// Fragment fragment = null;
//Bundle args = new Bundle();
switch (v.getId()){
case 0:
n = new Intent(getActivity(), Fragment1.class);
getActivity().startActivity(n);
break;
case 1:
n = new Intent(getActivity(), Fragment2.class);
getActivity().startActivity(n);
break;
}
}
});
// set animation listener
anim.setAnimationListener(this);
return v;
}
public void updateTextView() {
int maxIndex = textToShow.length;
Random random = new Random();
int generatedIndex = random.nextInt(maxIndex);
mSwitcher.setImageResource(textToShow[generatedIndex]);
}
Вот то, что я обновил, если это кому-то нужно
public void updateTextView() {
int maxIndex = textToShow.length;
Random random = new Random();
final int generatedIndex = random.nextInt(maxIndex);
mSwitcher.setImageResource(textToShow[generatedIndex]);
mSwitcher.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent n = null;
switch(generatedIndex){
case 0:
n = new Intent(getActivity(), Fragment1.class);
getActivity().startActivity(n);
break;
case 1:
n = new Intent(getActivity(), Fragment2.class);
getActivity().startActivity(n);
break;
case 2:
n = new Intent(getActivity(), Fragment3.class);
getActivity().startActivity(n);
break;
}
}
});
id
, которое вы получаете, являетсяid
изImageSwitcher
, но вам нужно фактическоеImage
, которое отображается в данный момент? Если да, то, возможно, getDisplayedChild() — это то, что ты хочешь - person codeMagic   schedule 25.03.2014