如何在Android Java中通过按钮的ID使用OnClickListener属性

听闻少年二字,当与平庸相斥。这篇文章主要讲述如何在Android Java中通过按钮的ID使用OnClickListener属性相关的知识,希望能为你提供帮助。
我正在尝试使用onClickListener通过每个按钮的id来获得相同的结果。这是原始代码的链接,其中onClick用于所有按钮,而没有创建ID供参考。我打算为每个按钮创建id不同于原始代码的原因是,我觉得原始代码有点简化,但是我想挑战自己,看看是否可以通过使用引用实现相同的结果,尽管我知道它的复杂性。但是我正在尝试做不同的事情,而不仅仅是盲目地复制粘贴代码:)
非常感谢您的帮助!
ps.s。请仅考虑与按钮代码相关的代码,因为我在该部分遇到错误,并且在原始代码中没有任何其他错误。
[https://gist.github.com/udacityandroid/4edd7beac8465acc07ca][1]
附上我的代码,使用ID作为按钮。

**activity_main.xml**< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> < TextView android:id="@+id/Team_Name_A" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:text="Team A" android:gravity="center_horizontal" /> < TextView android:id="@+id/Scored_Points" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="0" android:padding="20dp" android:gravity="center_horizontal" /> < Button android:id="@+id/Beyond_Three_Point_Line" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="+3 Points" android:onClick="addThreeForTeamA"/> < Button android:id="@+id/Within_Three_Point_Line" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="+2 Points" android:onClick="addTwoForTeamA"/> < Button android:id="@+id/Foul_Free_Throw" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="Free Throw!" android:onClick="addOneForTeamA"/> < /Linear**MainActivity.java**package com.example.scorebasket; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }public void addThreeForTeamA (View view){ Button button1 = (Button) findViewById(R.id.Beyond_Three_Point_Line); button1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {} }); public void addTwoForTeamA (View view){ Button button2 = (Button) findViewById(R.id.Within_Three_Point_Line); button2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { } }); public void addOneForTeamA (View view){ Button button3 = (Button) findViewById(R.id.Foul_Free_Throw); button3.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { } }); }/** * Displays the given score for Team A * */public void scoreEarnedByTeamA(int score) { TextView scoreView = (TextView) findViewById(R.id.Scored_Points); scoreView.setText(String.valueOf(score)); }}

我正在尝试使用onClickListener通过每个按钮的id来获得相同的结果。这是原始代码的链接,其中onClick用于所有按钮,而没有创建ID供参考。 ...
答案
package com.example.scorebasket; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }public void addThreeForTeamA (View view){ Button button1 = (Button) findViewById(R.id.Beyond_Three_Point_Line); button1.setOnClickListener(this); }public void addTwoForTeamA (View view){ Button button2 = (Button) findViewById(R.id.Within_Three_Point_Line); button2.setOnClickListener(this); }public void addOneForTeamA (View view){ Button button3 = (Button) findViewById(R.id.Foul_Free_Throw); button3.setOnClickListener(this); }@Override public void onClick(View view){ if(view.getId() == R.id.Beyond_Three_Point_Line){ // handle on click of R.id.Beyond_Three_Point_Line }else if(view.getId() == R.id.Within_Three_Point_Line){ // handle on click of R.id.Within_Three_Point_Line }else if(view.getId() == R.id.Foul_Free_Throw){} }/** * Displays the given score for Team A * */public void scoreEarnedByTeamA(int score) { TextView scoreView = (TextView) findViewById(R.id.Scored_Points); scoreView.setText(String.valueOf(score)); }}

另一答案【如何在Android Java中通过按钮的ID使用OnClickListener属性】您已经在XML文件中的按钮上使用onClick属性。无需在按钮上设置onClickListener。您可以添加将在单击这些按钮时执行的代码。
另一答案
View.OnClickListener onClickListener1 = new View.OnClickListener() { @Override public void onClick(View v) { case R.id.buttonId1 : break; case R.id.buttonId2 : break; case R.id.textViewId1 : break; } }; Button button1= findViewById(R.id.buttonId1); button1.setOnClickListener(onClickListener); Button button2 = findViewById(R.id.buttonId1); button2 .setOnClickListener(onClickListener); TextView textView1 = findViewById(R.id.textViewId1); textView1 .setOnClickListener(onClickListener);


    推荐阅读