Java 如何为多个onClick()创建方法?

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

我的android应用程序有三个按钮,点击所有按钮都可以完成相同的工作, 代码太长了,我不想复制代码3次。 那么,我如何使用一种方法来实现这一点呢? 这是一个按钮的代码

 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,会发生什么情况?这有助于我节省时间,时间比金钱还多@教父我得到了我的答案,但这将帮助其他人我得到了我的答案,但这将帮助其他人