728x90
반응형
💡OnClickListener, onClick()
◾ 클릭 이벤트 발생 시
📃버튼을 누르면 Toast 메시지를 띄운다.
📝layout.xml - 공통
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:background="@color/purple_200"
android:text="1"
android:textSize="30dp" />
<Button
android:id="@+id/btn_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/purple_200"
android:text="2"
android:textSize="30dp" />
<Button
android:id="@+id/btn_03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@color/purple_200"
android:text="3"
android:textSize="30dp" />
</LinearLayout>
📃OnClickListener 구현 방법 1
◾ View.OnClickListener 객체를 따로 만들어서 안에서 추상 메소드를 구현한다.
◾ 만든 listener를 변수에 저장한 후 호출해서 사용한다.
📝MainActivity.java
package com.example.eventstudy;
import androidx.appcompat.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.layout);
Button btn1 = findViewById(R.id.btn_01);
btn1.setOnClickListener(listener);
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onclick 1", Toast.LENGTH_SHORT).show();
}
};
}
📃OnClickListener 구현 방법 2
◾ 버튼 객체에서 setOnClickListener를 호출함과 동시에 onClick 함수를 같이 정의한다.
📝MainActivity.java
package com.example.eventstudy;
import androidx.appcompat.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.layout);
Button btn2 = findViewById(R.id.btn_02);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onClick 2", Toast.LENGTH_SHORT).show();
}
});
}
}
📃OnClickListener 구현 방법 3
◾ implements View.OnClickListener로 인터페이스를 상속받는다.
◾ 내부에서 onClick함수를 정의하고 this로 호출하여 사용한다.
📝MainActivity.java
package com.example.eventstudy;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
Button btn3 = findViewById(R.id.btn_03);
btn3.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onClick 3", Toast.LENGTH_SHORT).show();
}
}
📃OnClickListener 구현 방법 4
◾ xml파일에서 onClick속성을 이용해서 정의하고 java에서 같은 이름으로 메소드를 생성해서 사용한다.
📝layout.xml
<Button
android:id="@+id/btn_04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:onClick="onBtnClick"/>
📝MainActivity.java
public void onBtnClick(View view) {
Toast.makeText(MainActivity.this, "onBtnClick", Toast.LENGTH_SHORT).show();
}
💡전체 소스코드 정리
📝layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:id="@+id/btn_01"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:id="@+id/btn_02"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:id="@+id/btn_03"
/>
</LinearLayout>
📝MainActivity.java
package com.example.listenerevent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
Button btn1 = findViewById(R.id.btn_01);
Button btn2 = findViewById(R.id.btn_02);
Button btn3 = findViewById(R.id.btn_03);
btn1.setOnClickListener(listener);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onClick 2", Toast.LENGTH_SHORT).show();
}
});
btn3.setOnClickListener(this);
}
View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onClick 1", Toast.LENGTH_SHORT).show();
}
};
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "onClick 3", Toast.LENGTH_SHORT).show();
}
}
728x90
반응형
'App > Android Studio' 카테고리의 다른 글
Android Studio - OnTouchListener 이벤트 (0) | 2022.08.03 |
---|---|
Android Studio - OnClickListener 활용 (0) | 2022.08.03 |
Android Studio - 로또 번호 발생기 (0) | 2022.08.02 |
Android Studio - 메시지 출력[Log, Toast] (0) | 2022.08.02 |
Android Studio - 구구단 레이아웃 만들기 (0) | 2022.08.02 |
댓글