我有多个setOnClickListener,我想做的是让它变得更简单。
这是我的java
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// get the button view
ImageView foodImg = (ImageView) getView().findViewById(R.id.iconFoods);
ImageView barsImg = (ImageView) getView().findViewById(R.id.iconBars);
ImageView roomsImg = (ImageView) getView().findViewById(R.id.iconRooms);
ImageView wellnessImg = (ImageView) getView().findViewById(R.id.iconWellness);
ImageView beachesImg = (ImageView) getView().findViewById(R.id.iconBeaches);
ImageView kidsImg = (ImageView) getView().findViewById(R.id.iconKids);
ImageView attractionsImg = (ImageView) getView().findViewById(R.id.iconAttractions);
ImageView shopsImg = (ImageView) getView().findViewById(R.id.iconShops);
ImageView museumsUmg = (ImageView) getView().findViewById(R.id.iconMuseum);
// set a onclick listener for when the food button gets clicked
foodImg.setOnClickListener(new OnClickListener() {
// Start new list activity
public void onClick(View v) {
Intent mainIntent = new Intent(getActivity(),
Food.class);
startActivity(mainIntent);
}
});
// set a onclick listener for when the bars button gets clicked
barsImg.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent mainIntent = new Intent(getActivity(),
Bars.class);
startActivity(mainIntent);
}
});
如您所见,我为每个ImageView创建了一个setOnClickListener。 我的问题是,如何使用if语句多个setOnClickListener? 因此,当我点击ImageView Foods Icon时,我会打开食物活动。 在此之前谢谢:D
答案 0 :(得分:1)
在<{1}}中使用切换案例
onClick(...)
但为此, public void onClick(View v) {
switch (v.getId()) {
case R.id.iconFoods:
//do your Intent
break;
case R.id.iconBars:
//do your Intent
break;
case R.id.iconRooms:
break;
case R.id.iconWellness:
//do your Intent
break;
case R.id.iconBeaches:
//do your Intent
break;
and so on....
}
}
或Activity
必须延伸Fragment
界面
onClickListener
并且您将此public class MyFragment extends Fragment implements OnClickListener {
设置为Listener
,如:
ImageView
答案 1 :(得分:1)
创建一个常见的onClickListener
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(final View v) {
switch(v.getId()){
case R.id.button1:
((TextView) getView().findViewById(R.id.textView1)).setText("Button 1 pushed");
break;
case R.id.button2:
((TextView) getView().findViewById(R.id.textView1)).setText("Button 2 pushed");
break;
case R.id.button3:
((TextView) getView().findViewById(R.id.textView1)).setText("Button 3 pushed");
break;
}
}
};
然后将每个View设置为使用该单击侦听器,即:
Button btn1 = (Button) getView().findViewById(R.id.button1);
Button btn2 = (Button) getView().findViewById(R.id.button2);
Button btn3 = (Button) getView().findViewById(R.id.button3);
btn1.setOnClickListener(onClickListener);
btn2.setOnClickListener(onClickListener);
btn3.setOnClickListener(onClickListener);
希望它有所帮助。
答案 2 :(得分:0)
为所有视图分配相同的侦听器。
foodImg.setOnClickListener(this);
然后在Fragment中实现监听器接口。
public class MyFragment extends Fragment implements OnClickListener {
并将onClick()
方法添加到您的片段中:
public void onClick(View v) {
switch (v.getId())
{
case R.id.iconBars:
// handle the click
break;
case R.id.iconMuseum:
// handle the click
break;
// add all the other cases here
}
}
答案 3 :(得分:0)
为您的活动实施OnClickListener,如下所示: -
public class MyActivity extends Activity implements OnClickListener
实现之后会要求你添加umimplemented方法,然后在那个方法上你可以像下面这样使用switch case
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.foodImg :
break;
default:
break;
}
}
并且不要忘记为所有视图分配相同的监听器。
为此你可以创建一个方法并在OnCreate方法上调用它
private void registrerListeners() {
foodImg.setOnClickListener(this);
//rly add rest oncliclisterner of your image
}