用于多个setOnClickListener的Android If语句

时间:2014-06-17 09:17:36

标签: java android imageview

我有多个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

4 个答案:

答案 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
            }