✔✔중요✔✔
OnClickListener라는 인터페이스
인터페이스란?
상수, 추상메소드만 작성하는 설계도
추상메소드 => 세부적인 알고리즘을 설계하지 않습니다.
알고리즘 설계 (오버라이딩)의 책임은 하위 클래스에게 있다
추상메소드를 포함하고 있는 클래스를 상속받을 때는 반드시 오버라이딩 해야함.
구현의 강제성
public class LoginActivity extends AppCompatActivity {
TextView tv_call;
TextView tv_kakao;
Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//textview 선택하면 카카오 페이지 띄우기!
//클릭이벤트 연결하는 방법 중 onclick이 아닌 다른방식
//1. 이벤트를 걸어주고 싶은 view를 찾아온다.
tv_kakao = findViewById(R.id.tv_kakao);
//2. 속성 중 onclickListener를 사용하여 이벤트 처리를 해준다.
//Listener는 이벤트를 감지하는 개체
tv_kakao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View View) {
//이벤트 처리 메소드
//Intent 사용해서 카카오 페이지 띄워주자
//new Intent(액션,데이터)
Intent intent_kakao = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.kakaocorp.com/page/"));
//있어야 실행이됨
startActivity(intent_kakao);
}
});
tv_call = findViewById(R.id.tv_call);
tv_call.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View View) {
//전화걸기! : 안드로이드 입장에선 상당히 민감한 작업(보안문제)
//권한(premission)요청 작업이 필요함
if(ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
//현재 CALL_PHONE 권한이 없다면
ActivityCompat.requestPermissions(LoginActivity.this//(현재클래스이름)
,new String[]{Manifest.permission.CALL_PHONE}
,0);//요청을 보내서 응답이 올때 쓰는 코드값
}
Intent intent_call = new Intent(Intent.ACTION_CALL,
Uri.parse("tel:01092648478"));
//tel: (mine 타입 데이터형태 ==> Json도 그렇다.)
startActivity(intent_call);
}
});
//로그인 버튼에 이벤트 리스너 걸어주기
btn_login = findViewById(R.id.btn_login);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//보내는클래스.this => 받는클래스.class
Intent intent_main=new Intent(LoginActivity.this,
MainActivity.class);
startActivity(intent_main);
}
});
}
}
public class MainActivity extends AppCompatActivity {
ImageView img_logo2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img_logo2=findViewById(R.id.img_logo2);
img_logo2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//보내는클래스.this => 받는클래스.class
Intent intent_main=new Intent(MainActivity.this,
LoginActivity.class);
//현재 activity만 삭제하는 명령
finish();
}
});
}
}
