单击侦听器上的按钮
Button on click listener
我来自 iOS 世界,刚从 Android 开始。我参加了 java 培训,所以我知道如何创建方法,但我没有得到操作方法。
我想做的是从一个按钮创建一个方法动作,但我在任何地方都找不到如何做到这一点(显然找错了地方)。当我点击按钮 1 时,我想创建一个内部只有 a=1 的方法,当我点击按钮 2 时,我想要 a=2(然后我可以决定当 a 为 1 或 2 时要做什么)。
我在 Acitivity_main.xml 中创建了我的按钮并在 OnClick 中给出了一个方法名称,但我仅此而已。
和iOS比起来好像太基础了,不明白为什么找不到方法。
好心人能为我指明创建动作的正确方向吗?
您有三个选择:
常见于 1,2) 您需要为布局中的每个按钮分配一个 ID XML 文件
<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>
1) 在 activity 的 onCreate()
方法中 setContentView()
你需要为 OnClickListener
设置一个新的 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中分配方法名称然后实现相同的方法在 activity 中具有完全相同的名称,但它必须将 View 对象作为参数。
<Button
...
android:onClick="button1Click" />
<Button
...
android:onClick="button2Click" />
然后在您的 activity 中编写方法。
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号。
您有两个选项来处理按钮,来自 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;
}
首先在您的 xml 文件中分配按钮,如下所示:-
<Button android:id="@+id/button1"
..........
/>
<Button android:id="@+id/button2"
..........
/>
从 xml 中找到 ID 后,像下面那样在其上设置 OnclickListener,并且不要忘记在您的 class 上实现 OnClickListener 侦听器,例如 public class CLASSNAME 扩展 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;
}
}
在您的 activity 布局中创建两个按钮并将一些 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" />
然后,在您的 activity class 文件中获取那些
按钮并像下面这样设置 onclick Listener(将所有内容写在
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;
}
有两种方法可以对按钮单击执行操作
第一种方法是在 Button 代码的布局 (xml) 文件中设置一个 android:OnClick = "methodName" 并在 java 访问该按钮的代码,如
public void methodName(View v) {
// Do what you want to perform on Button click
}
在按钮后面执行某些操作的第二种方法是在 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
}
});
我来自 iOS 世界,刚从 Android 开始。我参加了 java 培训,所以我知道如何创建方法,但我没有得到操作方法。
我想做的是从一个按钮创建一个方法动作,但我在任何地方都找不到如何做到这一点(显然找错了地方)。当我点击按钮 1 时,我想创建一个内部只有 a=1 的方法,当我点击按钮 2 时,我想要 a=2(然后我可以决定当 a 为 1 或 2 时要做什么)。
我在 Acitivity_main.xml 中创建了我的按钮并在 OnClick 中给出了一个方法名称,但我仅此而已。
和iOS比起来好像太基础了,不明白为什么找不到方法。
好心人能为我指明创建动作的正确方向吗?
您有三个选择:
常见于 1,2) 您需要为布局中的每个按钮分配一个 ID XML 文件
<Button android:id="@+id/my_button1"
..........
/>
<Button android:id="@+id/my_button2"
..........
/>
1) 在 activity 的 onCreate()
方法中 setContentView()
你需要为 OnClickListener
设置一个新的 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中分配方法名称然后实现相同的方法在 activity 中具有完全相同的名称,但它必须将 View 对象作为参数。
<Button
...
android:onClick="button1Click" />
<Button
...
android:onClick="button2Click" />
然后在您的 activity 中编写方法。
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号。
您有两个选项来处理按钮,来自 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;
}
首先在您的 xml 文件中分配按钮,如下所示:-
<Button android:id="@+id/button1"
..........
/>
<Button android:id="@+id/button2"
..........
/>
从 xml 中找到 ID 后,像下面那样在其上设置 OnclickListener,并且不要忘记在您的 class 上实现 OnClickListener 侦听器,例如 public class CLASSNAME 扩展 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;
}
}
在您的 activity 布局中创建两个按钮并将一些 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" />
然后,在您的 activity class 文件中获取那些 按钮并像下面这样设置 onclick Listener(将所有内容写在
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; }
有两种方法可以对按钮单击执行操作
第一种方法是在 Button 代码的布局 (xml) 文件中设置一个 android:OnClick = "methodName" 并在 java 访问该按钮的代码,如
public void methodName(View v) { // Do what you want to perform on Button click }
在按钮后面执行某些操作的第二种方法是在 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 } });