Java 如何为多个onClick()创建方法?
我的android应用程序有三个按钮,点击所有按钮都可以完成相同的工作, 代码太长了,我不想复制代码3次。 那么,我如何使用一种方法来实现这一点呢? 这是一个按钮的代码Java 如何为多个onClick()创建方法?,java,android,Java,Android,我的android应用程序有三个按钮,点击所有按钮都可以完成相同的工作, 代码太长了,我不想复制代码3次。 那么,我如何使用一种方法来实现这一点呢? 这是一个按钮的代码 public void onClick(View v) { switch (v.getId()) { case R.id.Btn1: Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
public void onClick(View v) {
switch (v.getId()) {
case R.id.Btn1:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1); //Gallery acessing
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
super.setContentView(R.layout.activity_view);
selectedImage = (ImageView) findViewById(R.id.selectedImage); //Onresult redarct to anothr activity
}
Uri photoUri = data.getData();
if (photoUri != null) {
try {
currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
selectedImage.setImageBitmap(currentImage);
} catch (Exception e) {
e.printStackTrace();
Intent myIntent = new Intent(this, ViewActivity.class);
startActivity(myIntent); //switch activity
}
}}
}
然后在视图中设置它
view1.setOnClickListener(myClickListener);
view2.setOnClickListener(myClickListener);
//... etc
然后在视图中设置它
view1.setOnClickListener(myClickListener);
view2.setOnClickListener(myClickListener);
//... etc
您可以使用其他视图中的第一个按钮单击
Button button1 = findViewById(R.id.Btn1)
case R.id.Btn2:
button1.performClick()
您可以使用其他视图中的第一个按钮单击
Button button1 = findViewById(R.id.Btn1)
case R.id.Btn2:
button1.performClick()
您可以尝试下面的代码。我已经创建了一个公共方法doSomething(),它在每次单击按钮时都会被调用,因此无论何时调用它,它都会执行相同的函数
public void onClick(View v) {
switch (v.getId()) {
case R.id.Btn1:
doSomething();
break;
case R.id.Btn2:
doSomething();
break;
}
}
public void doSomething(){
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1); //Gallery acessing
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
super.setContentView(R.layout.activity_view);
selectedImage = (ImageView) findViewById(R.id.selectedImage); //Onresult redarct to anothr activity
}
Uri photoUri = data.getData();
if (photoUri != null) {
try {
currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
selectedImage.setImageBitmap(currentImage);
} catch (Exception e) {
e.printStackTrace();
Intent myIntent = new Intent(this, ViewActivity.class);
startActivity(myIntent); //switch activity
}
}}
}
您可以尝试下面的代码。我已经创建了一个公共方法doSomething(),它在每次单击按钮时都会被调用,因此无论何时调用它,它都会执行相同的函数
public void onClick(View v) {
switch (v.getId()) {
case R.id.Btn1:
doSomething();
break;
case R.id.Btn2:
doSomething();
break;
}
}
public void doSomething(){
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1); //Gallery acessing
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
super.setContentView(R.layout.activity_view);
selectedImage = (ImageView) findViewById(R.id.selectedImage); //Onresult redarct to anothr activity
}
Uri photoUri = data.getData();
if (photoUri != null) {
try {
currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
selectedImage.setImageBitmap(currentImage);
} catch (Exception e) {
e.printStackTrace();
Intent myIntent = new Intent(this, ViewActivity.class);
startActivity(myIntent); //switch activity
}
}}
}
我只看到一个按钮的开关盒这只是一个按钮@DylanBurton#sir3按钮,所有按钮都做相同的事情?然后只保留一个按钮。在同一活动中有三个按钮吗?@m0skit0所有三个按钮都做相同的工作,但目的不同。我只看到一个按钮的开关盒这只适用于一个按钮@DylanBurton#sir3按钮,它们都做相同的事情?然后只保留一个按钮。在同一个活动中有三个按钮吗?@m0skit0所有三个按钮都做相同的工作,但目的不同。您可以解释您的答案吗?真的没有什么需要解释的:您创建一个侦听器作为成员,并将其设置为您喜欢的任何视图。它会在任何视图单击设置它的位置时被调用。因为您只创建了一个,所以每次单击都会得到相同的代码executed@krishna按钮就是一个视图,所以任何视图都可以。OnClickListener将在按钮上工作。你可以解释你的答案吗?其实没什么需要解释的:你创建了一个监听器作为成员,并将其设置为你喜欢的任何视图。它会在任何视图单击设置它的位置时被调用。因为您只创建了一个,所以每次单击都会得到相同的代码executed@krishna按钮是一个视图,因此任何视图。OnClickListener都将在按钮上工作是的,它类似于您单击的按钮1。应该重用侦听器,而不是单击另一个按钮,这种方法迫使您依赖另一个按钮。如果稍后删除按钮1会发生什么情况?这有助于我节省时间,而且时间比x@GodfatherYes更省钱。它类似于您单击的按钮1。应该重用侦听器,而不是单击另一个按钮,这种方法迫使您依赖另一个按钮。如果稍后删除按钮1,会发生什么情况?这有助于我节省时间,时间比金钱还多@教父我得到了我的答案,但这将帮助其他人我得到了我的答案,但这将帮助其他人