单击侦听器上的按钮



我来自iOS世界,刚开始使用Android。我参加了Java培训,所以我知道如何创建一个方法,但我没有得到一个动作。

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

我在Acitivity_main.xml中创建了我的按钮,并在 OnClick 中给出了一个方法名称,但这就是我所到之处。

当我与iOS进行比较时,它似乎是如此基本,以至于我不明白为什么我找不到如何做到这一点。

请问一个善良的灵魂会为我指明正确的方向来创造行动吗?

您有三个选择:

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

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

1)setContentView()后的活动onCreate()方法中,您需要为每个按钮设置一个新的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中分配方法名称,然后在具有完全相同名称的活动中实现相同的方法,但它必须将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。

文档中有两个选项来处理按钮:

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

首先在xml文件中分配按钮,如下所示:-

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

从 xml 找到 id 后,像下面这样设置OnClickListener,不要忘记在你的类上实现OnClickListener 侦听器,如公共类 CLASSNAME extend 活动实现 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;
}
}

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

  1. 第一种方法是在按钮代码的布局(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
    }
    });
    
  • 活动布局中创建两个按钮,并分配一些 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" />
    

    然后,在您的活动类文件中获取那些 按钮并设置点击监听器,如下所示(将所有内容都写在onCreate()onResume方法)。在里面点击方法做任何事情 你想要。

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

最新更新