android 개발 중 감청기의 세 가지 실현 방법(OnClickListener)

성명: 본 아이의 졸업 디자인은 안드로이드를 바탕으로 개발한 ********이므로 안드로이드 개발에 유용한 글은 먼저 옮겨 싣고 9월에 논문을 쓰는 데 도움이 됩니다.
태그:
안드로이드 개발 중 감청기의 실현에는 세 가지 방법이 있는데 초보자에게는 이 세 가지 방법을 잘 이해할 수 있고 안드로이드 중 감청기에 대한 자신의 이해를 더욱 증진시킬 수 있다.
1. 감청기가 무엇인지.
감청기는 View 클래스에 존재하는 인터페이스로 일반적으로 On******Llistener로 명명되며 이 인터페이스를 실현하려면 해당하는 on****(View v) 방법(예를 들어 onClick(View v)을 복사해야 한다.
2. 감청기의 세 가지 실현 방법
(OnclickListener의 경우)
방법1:Activity에서 내부 클래스 계승 감청기 인터페이스를 정의합니다. (여기는 OnclickListener입니다.)일반적인 상속 방법은 다음과 같습니다.
class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    }

또는 다른 방식, 즉 new의 이 감청기(Onclick Listener)의 대상을 사용할 수 있다. 이 방식은 위의 직접적인 계승과 공통점이 있다.
//   ,       OnClickListener    ,                 
    private View.OnClickListener MyListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    };

상기 두 개의 실현된 감청기가 onCreate(Bundle savedInstanceState 방법에서 호출되는 것은 모두 같다. 즉, setOnClickListener() 방법을 사용하는 것이다.
bt2.setOnClickListener(new MyListener());

방법2: 익명 내부 클래스를 실현한다.이런 방법은 감청기만 한꺼번에 사용하기를 바라는 경우에 적합하며 이 코드 블록이 실행된 후에 이 감청기는 다시 존재하지 않는다.
bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

방법 3: 레이아웃 파일의 onClick 속성을 이용하여 실행 파일에서 이 방법을 실현한다.주의해야 할 것은 이 방법명은 레이아웃 파일의 onClick 속성과 방법명이 같아야 하며, 이 방법은public 방법이어야 한다.
//    ,    public  
    public void onButtonClick (View view){
        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
    }
}

레이아웃 파일의 설정
<Button
        android:layout_below="@id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="Button3"
        android:onClick="onButtonClick"/>

이상은android에서 감청기를 실현하는 세 가지 방법입니다.
다음은 전체 프로젝트의 전체 코드입니다
레이아웃 파일:
xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.jeffrey.listener.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text"
        android:text="OnClickListener" />
    <Button
        android:layout_below="@id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1"
        android:id="@+id/button1"/>
    <Button
        android:layout_below="@id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button2"
        android:id="@+id/button2"/>
    <Button
        android:layout_below="@id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="Button3"
        android:onClick="onButtonClick"/>
RelativeLayout>

구현 파일:
package com.example.jeffrey.listener;

import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1 = (Button)findViewById(R.id.button1);//     
        Button bt2 = (Button)findViewById(R.id.button2);//     

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

        bt2.setOnClickListener(new MyListener());

    }
    class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    }
    //   ,       OnClickListener    ,                 
    private View.OnClickListener MyListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    };

    //    ,    public  
    public void onButtonClick (View view){
        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
    }
}

출력 결과: 해당 버튼을 클릭하면 "you have clicked Button?"라는 힌트를 줬다.
총괄: 세 가지 방법은 각자 좋은 점이 있다고 말할 수 있다.첫 번째 방법은 초보자가 입문하면 반드시 배워야 하는 것이다.첫 번째 방법에 비해 나중에 두 가지 방법은android 개발에서 흔히 볼 수 있고 대신들이 자주 추천하는 방법이다.자신이 그 방법을 사용하고자 하는 것은 자신의 흥미에 달려 있다.

좋은 웹페이지 즐겨찾기