2020. 10. 6. 00:20ㆍ컴퓨터 수업/Android studio
copycoding.tistory.com/47?category=1027251
Category:
1. XML에서 함수명 선언해서 이용,
2. XML에서 id만 선언하고 java랑 연결해서, java에서 onClick에 대한 메소드를 선언하기위해 new 객체를 만들기
1.XML에서 함수명 선언해서 이용
#xml
android:onClick = "함수명"
이 말이 무슨말이냐면
해당 버튼을 클릭하면 (onClick) 함수명으로 지은 함수쪽으로 (java에 있다.)
해당 클래스 (ex. TextView, Button 등을 argument로 보내겠다는 뜻이다.)
#java
public void ButtonClicked(View view) {
if (view.getId() == R.id.button1) {
Toast.makeText(this, "도우너 어서오고", Toast.LENGTH_SHORT).show();
} else if (...)
}
함수명은 당연히 "ButtonClicked"로 지었을 것이다. 안그러면 XML에서 java의 함수를 찾을 수 없다!
그리고, parameter를 보면, View view 라고 되어있는데
datatype name이니 겁먹을 필요가 없다.
따라서, View view = 버튼을 클릭해서 아규먼트로 전달 된 해당 뷰, 가 될것이다.
이젠, 이 view의 메소드를 이용해서 사용하기만 하면 될 것이다.
+)여기선 if else 분기를 통해, view의 id를 확인하고 분기시켰다.
따라서, XML에서 각 버튼마다 다른 onClick의 함수를 지정해줬다면 당연히 각각 다른 id를 가지겠지만
이런식으로 보낸경우 각각의 id로 분기시켜야한다.
보통 이 경우에 id로 나누고 싶지 않을 때 이렇게 한다. 따라서 다음과 같은 expression도 가능하다.
public void ButtonClicked(View view)
{
Button button1 = (Button)view;
하고 그냥 여기서 button1 을 쓰는건데 굳~이 view를 안쓰는 이유가 뭘까 책은...
}
캐스팅을 통해 안정성 확보인강...
ㄴㄴ 그 view를 안쓸때가 문제인거야
예를들어 password를 edittext를 통해 입력받고, button을 클릭했을 때 그게 보고싶으면
함수로 button을 전달한다고해서 뭐 의미가 있는게 아니잖아
++)Toast 얘기
Toast.makeText(this,"하고싶은말",얼마나 떠있을지).show(); 인데
이는 Toast를 makeText로 초기화 한 뒤, show 메소드를 사용하는 것이다. 즉,
Toast toast = Toast.makeText(this,"초능력 맛 좀 볼래?",Toast.LENGTH_SHORT);
toast.show();
이렇게!
2. XML에서 id만 선언하고 java랑 연결해서, java에서 onClick에 대한 메소드를 선언하기위해 new 객체를 만들기
Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(this,"대마초",Toast.LENGTH_SHORT).show();
}
});
여기서 문제,
button1.setOnClickListner는 반드시 onCreate 메소드 안에 있어야한다. (O/X)
O
해당 앱이 실행되자마자 연결이되고, 객체가 생성되어야하기 때문에, O이다.
'컴퓨터 수업 > Android studio' 카테고리의 다른 글
안드로이드 스튜디오의 시작 (0) | 2020.10.19 |
---|---|
Android studio로 계산기 만들기. (0) | 2020.09.12 |
안드로이드 스튜디오 단축키 (0) | 2020.09.12 |
앱 안의 버튼을 눌렀을 때, 특정한 일이 일어나게 하는 방법. (0) | 2020.09.11 |