Android 프로그래밍을 공부하는 많은 사람들은 코드 작성 방법에 대한 선호도가 모두 다르다는 것을 알게 될 것입니다. 가장 분명한 것은 이벤트에 응답하는 컨트롤을 작성하는 방법이 다르다는 것입니다. 따라서 이 글에서는 이러한 작성 방법을 요약하고 다양한 작성 방법의 장단점을 비교하여 모든 사람이 인코딩 방법을 유연하게 선택할 수 있는 확실한 참고 가치가 되기를 바랍니다.
xml 파일 코드는 다음과 같습니다.
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button2" />
네 가지 메소드에 대한 설명은 다음과 같습니다.
익명 내부 클래스:
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); } }); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); } }); } }
사용자 정의 클릭 이벤트 수신 클래스 :
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; class MyClickListener implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new MyClickListener()); btn2.setOnClickListener(new MyClickListener()); } }
Activity는 View.OnClickListener를 상속하며, Activity는 OnClick(View 뷰) 메서드를 구현합니다. OnClick(View 뷰) 메서드에서는 스위치 케이스를 사용하여 서로 다른 ID로 표시되는 버튼을 그에 따라 처리합니다. 🎜>
public class TestButtonActivity extends Activity implements OnClickListener { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }마지막은 오늘 본 작성법인데, XML 파일에서 "지정된 버튼의 onClick 속성을 표시하여 버튼을 클릭할 때 해당 버튼에 click() 메서드가 표시되도록 합니다. Activity는 리플렉션에 의해 호출됩니다."
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button2" />여기서 android:를 입력한 후 Alt+/를 누르면 onClick 속성에 대한 프롬프트가 표시됩니다. 그런데 android:onClick="을 입력한 후 Alt+/를 누르면 , onClick 옵션에 대한 프롬프트가 없어서 갑자기 여기에 뭔가 문제가 있다는 느낌이 들었습니다.
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); } // 注意 这里没有 @Override 标签 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }전체 코드에서 버튼을 선언하지 않고도 버튼 클릭 이벤트를 구현할 수 있습니다. 🎜>위는 버튼 클릭 이벤트를 구현하는 네 가지 방법입니다. >대략적으로 요약하면 데모 테스트나 로그인 인터페이스를 작성할 때와 같이 버튼이 적을 때 익명 내부 클래스를 사용하는 것이 더 빠릅니다. 버튼이 많을 때는 여전히 더 편리한 세 번째 방법을 선택합니다. 네 번째 방법에 관해서는 가장 편리하다고 생각하지만, 코드를 많이 읽어본 후에도 여전히 그 느낌이 듭니다. 글쓰기 방법은 대중적이지 않습니다. 관심 있는 친구들이 많은 것을 배울 수 있을 거라 믿습니다. 이 글이 모든 사람의 안드로이드 프로그래밍 학습에 도움이 되기를 바랍니다. Android 버튼 클릭 이벤트를 작성하는 네 가지 일반적인 방법을 요약한 기사는 PHP 중국어 웹사이트를 주목하세요