我在 Android 应用中有多个按钮。我想知道在 Java 代码中单击了哪个按钮。据我所知,这是通过这样的单一方法完成的:
public void onClick(View view) {
// Do something
}
在该方法中,您必须确定单击了哪个按钮。那是对的吗?
如果是这样,我怎么知道哪个被点击了?我确实有 findViewById() 返回的各种 Button 对象。我只是不知道如何使用它们来判断单击了哪个按钮。
我在 Android 应用中有多个按钮。我想知道在 Java 代码中单击了哪个按钮。据我所知,这是通过这样的单一方法完成的:
public void onClick(View view) {
// Do something
}
在该方法中,您必须确定单击了哪个按钮。那是对的吗?
如果是这样,我怎么知道哪个被点击了?我确实有 findViewById() 返回的各种 Button 对象。我只是不知道如何使用它们来判断单击了哪个按钮。
在您的活动类中实现 View 的 OnClickListner。覆盖点击方法。
Button b1= (Button) findViewById(R.id.button1);
//find your button id defined in your xml.
b1.setOnClickListener(this);
// You have button OnClickListener implemented in your activity class.
//this refers to your activity context.
我使用了敬酒消息。
http://developer.android.com/guide/topics/ui/notifiers/toasts.html
Toast.makeText(MainActivity.this,"button1", 1000).show();
//display a toast using activity context ,text and duration
使用 switch case,您可以检查单击了哪个按钮。
在您的 onClick 方法中。
switch(v.getId()) //get the id of the view clicked. (in this case button)
{
case R.id.button1 : // if its button1
//do something
break;
}
这是完整的代码。
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b1= (Button) findViewById(R.id.button1);
Button b2= (Button) findViewById(R.id.button2);
Button b3= (Button) findViewById(R.id.button3);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button1 :
Toast.makeText(MainActivity.this,"button1", 1000).show();
break;
case R.id.button2 :
Toast.makeText(MainActivity.this,"button2", 1000).show();
break;
case R.id.button3 :
Toast.makeText(MainActivity.this,"button3", 1000).show();
break;
}
}
}
有不同的方法来处理这个。有了你目前拥有的,你可以使用
public void onClick(View view) {
// Do something
view.getId();
}
这将返回android:id
您的xml
. 您可以使用switch
语句来比较这些值以决定要做什么并打开id
. 你也可以onClick()
在你xml
的每个button
.
<Button
...
android:onClick="functionName"/>
然后在你的java代码中你可以拥有
public void functionName(View view) {
// Do something
}
view
单击此处将是您button
在onClick
您的xml
如果是这样,我怎么知道哪个被点击了?
老朋友切换将帮助您实现目标:
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
// do your stuff for btn1
break;
case R.id.btn2:
// do your stuff for btn2
break;
...
}
}
说明:每个小部件都有,因此您可以通过上面写的 in 开关ID
简单地处理单击了哪个 Button 。ID
view.getId()
小部件的返回ID
。
您还可以为每个按钮使用匿名内部类:
Button b1= (Button) findViewById(R.id.button1);
Button b2= (Button) findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// button 1 was clicked!
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// button 2 was clicked!
}
});
您可以使用ButterKnife
库(http://jakewharton.github.io/butterknife/):
//Fragment
@InjectView(R.id.dialog_userinput)
public EditText userinput;
@InjectView(R.id.dialog_passinput)
public EditText passinput;
@OnClick(R.id.dialog_login)
public void login(View view) {
//do stuff
this.dismiss();
}
@OnClick(R.id.dialog_cancel)
public void cancel(View view) {
//do stuff
this.dismiss();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_layout, container);
ButterKnife.inject(this, view);
return view;
}
implements
public class ProgramsFiles extends AppCompatActivity implements View.OnClickListener {
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnA:
//ExampleA
break;
case R.id.btnB:
//ExampleB
break;
}
}
}