有 Java 编程相关的问题?

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

Android中的java setOnClickListner()

如果屏幕(UI)中有这么多按钮,并且需要执行单独的功能,对于这种情况,我们可以为每个按钮使用setOnClickListner,或者使用什么优化方法来处理


共 (4) 个答案

  1. # 1 楼答案

    使您的活动实现View.onClickListener并切换已发送的Viewid:

    public class YourActivity extends ... implements View.OnClickListener
    {   
        ...
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            ...
    
            button1.setOnClickListener(this);
            button2.setOnClickListener(this);
    
        }
    
        ...
    
        @Override
        public void onClick(View view)
        {
    
            switch (view.getId())
            {
                case R.id.yourFirstButton:
                    ...
                    break;
    
                case R.id.yourSecondButton:
                    ...
                    break;
    
                ...
            }
        }
    }
    
  2. # 2 楼答案

    实现这一点的最佳方法是实现视图。我的听众。 在onClick()中,可以将开关盒用于按钮

       @Override
    public void onClick(View v) {
     switch(v.getId()){
      case R.id.Button1 :  //Your button code
                             break;
      case R.id.Button2 : // Your Second Button code
                              break;
         .
         .
         .
         .
       }
    }
    
  3. # 3 楼答案

    如果UI中的按钮太多,可以按照此过程操作

    在设计页面(XML)中,对每个具有相同名称的活动使用“onClick()”方法。在我的例子中,它是android:onClick=“onClickButton”

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClickButton"
    android:textColor="@color/icons" />
    
    <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClickButton"
    android:textColor="@color/icons" />
    

    现在在活动页面中使用这样的方法

    public void onClickButton(View v)
    {
    switch(v.getId())
     {
       case R.id.button1:
           //do your work related to on click button1
       break;
    
       case R.id.button2:
          //do your work related to on click button2
       break;
       ....
    
     }
    }
    

    您可以在机箱中使用任意数量的按钮。 希望有帮助

  4. # 4 楼答案

    我通常会这样做:

    public class Menu extends AppCompatActivity {
    
    Private Button button1, button2, button3, button4, button5;
    
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_menu);
    
    
            button1 = (Button) findViewById(R.id.button1);
            button2 = (Button) findViewById(R.id.button2);
            button3 = (Button) findViewById(R.id.button3);
            button4 = (Button) findViewById(R.id.button4);
            button5 = (Button) findViewById(R.id.button5);
    
            Button[] buttons = new Button[] {button1, button2, button3, button4, button5};
            final String[] functions= new String[] {"options", "exit", "credits", "more", "pictures"};
            for (int i = 0; i < buttons.length; i++) {
                final String function = functions[i].toString();
                buttons[i].setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        StartIntent(function);
                    }
                });
            }
        }
    
        private StartIntent (String function){
            Intent i;
    
            switch (function) {
                case options:
                    i = new Intent(this, OptionsActivity.class);
                    break;
                case options:
                    i = new Intent(this, ExitActivity.class);
                    break;
                case options:
                    i = new Intent(this, CreditsActivity.class);
                    break;
                case options:
                    i = new Intent(this, MoreActivity.class);
                    break;
                case options:
                    i = new Intent(this, PicturesActivity.class);
                    break;
                default:
                    Log.e("StartIntent", "invalid function");
                    return;
            }
    
            startActivity(i);
        }
    }
    

    这将根据您单击的按钮打开不同的意图,但这实际上取决于您的情况