android 개발 중 감청기의 세 가지 실현 방법(OnClickListener)
태그:
안드로이드 개발 중 감청기의 실현에는 세 가지 방법이 있는데 초보자에게는 이 세 가지 방법을 잘 이해할 수 있고 안드로이드 중 감청기에 대한 자신의 이해를 더욱 증진시킬 수 있다.
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 개발에서 흔히 볼 수 있고 대신들이 자주 추천하는 방법이다.자신이 그 방법을 사용하고자 하는 것은 자신의 흥미에 달려 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Android] 둥글게 펼쳐지는 Ripple을, 바삭하게 구현간이적으로 터치 피드백이 없는 버튼이나 레이아웃, 탭 범위가 좁아져 버린 버튼 등에, 범위 밖으로 둥글게 퍼지는 Ripple로 탭감, 영역을 조금 늘립니다. 이런 느낌 (화질 나쁘고 미안해..) Ripple을 내고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.