有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于多个setOnClickListener的java Android If语句

我有多个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。 我的问题是,如何对多个setOnClickListener使用if语句? 因此,当我单击ImageView Foods图标时,我会打开Foods活动。 谢谢你:D


共 (4) 个答案

  1. # 1 楼答案

    将同一侦听器分配给所有视图

    foodImg.setOnClickListener(this);
    

    然后在片段中实现侦听器接口

    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
    
        }
    }
    
  2. # 2 楼答案

    用于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....
        }
    }
    

    但是,为此,您的ActivityFragment必须扩展onClickListener接口

    public class MyFragment extends Fragment implements OnClickListener {
    

    您将把这个Listener设置为您的ImageView,如下所示:

    foodImg.setonClickListner(this); 
    roomsImg.setonClickListner(this);
    ...and so on
    
  3. # 3 楼答案

    将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
                }
    
  4. # 4 楼答案

    创建一个公共onclick侦听器

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

    然后将每个视图设置为使用该单击侦听器,即:

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

    希望能有帮助