>Java >java지도 시간 >Android 버튼 클릭 이벤트에 대한 네 가지 일반적인 쓰기 방법 요약

Android 버튼 클릭 이벤트에 대한 네 가지 일반적인 쓰기 방법 요약

高洛峰
高洛峰원래의
2017-02-07 16:19:511200검색

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 중국어 웹사이트를 주목하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.