单击侦听器上的按钮

时间:2015-05-19 10:59:31

标签: android button methods action

我来自iOS世界,刚开始使用Android。我接受了java培训,所以我知道如何创建一个方法,但我没有采取行动。

我想要做的是从按钮创建一个方法动作,我无法在任何地方找到如何做到这一点(显然在错误的地方寻找)。当我点击按钮1时,我想创建一个内部只有a = 1的方法,当我点击按钮2时,我想要一个= 2(然后我可以决定当a为1或2时该做什么)。

我在Acitivity_main.xml中创建了我的按钮,并在OnClick中提供了一个方法名称,但就我而言。

当我与iOS比较时似乎很基本,我不明白为什么我无法找到它。

请一位好心的人指出我正在制定行动的正确方向吗?

5 个答案:

答案 0 :(得分:3)

您有三种选择:

常见于1,2)您需要为布局XML文件中的每个按钮分配一个ID

<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>

1)onCreate()之后的活动setContentView()方法中,您需要为每个按钮设置一个新的OnClickListener

 public class MyActivity extends Activity  {
    int a;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button myButton1 = (Button) findViewById(R.id.my_button1);
        Button myButton2 = (Button) findViewById(R.id.my_button2);

        myButton1.setOnClickListener( new OnClickListener() {
          @Override
            public void onClick(View v) {
                // Do what you want here
                a = 1;
            }
        });

        myButton2.setOnClickListener( new OnClickListener() {
           @Override
            public void onClick(View v) {
                // Do what you want here
                a = 2;
            }
        });
      }

2)正如您在第一种方法中所看到的,我们需要为每个按钮从OnClickListener创建一个新对象。我们可以将所有内容合并为一个OnClickListener,以实现效果可读性

public class MyActivity extends Activity implements View.OnClickListener {
    int a;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button myButton1 = (Button) findViewById(R.id.my_button1);
        myButton1.setOnClickListener(this);
        Button myButton2 = (Button) findViewById(R.id.my_button2);
        myButton2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.my_button_1:
                a = 1;
                break;
            case R.id.my_button_2:
                a = 2;
                break;
        }
    }
    ...
}

3)您不需要为此选项分配ID,您只需要在XML中分配方法名称,然后在活动中使用完全相同的方法实现相同的方法name,但必须将View对象作为参数。

<Button 
...
android:onClick="button1Click" />

<Button 
...
android:onClick="button2Click" />

然后在你的活动中写下方法。

public class MyActivity extends Activity implements View.OnClickListener {
    int a;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void button1Click(View v) {
       a = 1;
    }


    public void button2Click(View v) {
       a = 2;
    }
}

这是您的所有选择。我个人更喜欢2号。

答案 1 :(得分:0)

您可以通过documentation

选择两个按钮来处理按钮

a)在你的java文件中声明并定义你的方法

    int a = 0;
    final Button button = (Button) findViewById(R.id.button_id);
             button.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     a = 1;
                 }
             });

b)或在xml布局中定义方法:

 <Button
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:text="@string/self_destruct"
     android:onClick="selfDestruct" />

然后在你的java文件中:

 int a = 0;
 public void selfDestruct(View view) {
     a = 1;
 }

答案 2 :(得分:0)

首先在您的xml文件中指定按钮,如下所示: -

<Button android:id="@+id/button1"
..........
/>

<Button android:id="@+id/button2"
..........
/>

从xml中找到id后,如下所示在其上设置OnclickListener并且不要忘记在你的类上实现OnClickListener监听器,如公共类CLASSNAME extends Activity实现OnClickListener

 button1 .setOnClickListener(CLASSNAME.this);
 button2.setOnClickListener(CLASSNAME.this);

比实现onclickListener之后,它会为你提供像onclick这样的覆盖方法(View v)

@Override
public void onClick(View v) {

    switch (v.getId()) {
    case R.id.button1 : //Here i assumes that button1 is the name of button in yours xml which you declare button1
    //  do something on button1 click
    break;

    case R.id.button2 :////Here i assumes that button2 is the name of button in yours xml which you declare button2

    //  do something on button2 click
    break;
 }
}

答案 3 :(得分:0)

  • 在您的活动布局中创建两个按钮并指定一些ID 他们喜欢这个     

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button2"
        android:layout_gravity="center_horizontal|top" />
    

    然后,在您的活动类文件中获取这些文件的regerence 按钮和设置onclick听众如下(写下所有内容 onCreate()onResume方法)。在onClick方法中做任何事情 你想要的。

      Button myButton1;
      Button myButton2;
      int a;
      protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_home);
               myButton1 = (Button) findViewById(R.id.my_button1); 
    
               myButton1.setOnClickListener( new OnClickListener() {
    
                   @Override
                   public void onClick(View v) { a =1;
               }
    
                myButton2 = (Button) findViewById(R.id.my_button1);
                myButton2.setOnClickListener( new OnClickListener() {
    
                   @Override
                   public void onClick(View v) { a =2;
               }
    

答案 4 :(得分:0)

有两种方法可以对按钮单击执行操作

  1. 第一种方法是在Button代码中的布局(xml)文件中设置一个android:OnClick =“methodName”,并在java代码中使用该方法来访问该按钮

    public void methodName(View v) {
        // Do what you want to perform on Button click
    }
    
  2. 在按钮后面执行某些操作的第二种方法是在java代码中访问该按钮并执行您想要执行的操作

     Button button = findViewById(R.id.button);
     button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                // Do what you want to perform on that button click
             }
         });