Hello DH.
지난 시간 아래와 같이 Layout을 구성하였다.
아래와 같이 모든 버튼에 ID를 넣었다.
'C'가 표시된 버튼은 am_buttonClear라는 ID가 설정되어 있다.
1. 함수 연결하기
아래의 빨간색의 테두리 상자의 ID와 녹색 상자의 표시 이름을 확인한다.
이 ID ( 예 - am_buttonClear )을 사용하여 'C'가 표시된 버튼이 눌리면 동작하는 함수를 구분한다.
- ID를 구분하는 코드 넣기
아래 그림과 같이 Projector 탭에서 폴더를 열면서 아래로 내려가면 MainActivity 찾을 수 있다.
MainActivity 안에서 onCreate()함수를 찾는다.
아래와 같이 onCreate() 함수를 찾는다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
위 코드 바로 아래에 아래와 같이 buttonNumberListener을 생성한다.
Button.OnClickListener buttonNumberListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.am_button0: {
break;
}
case R.id.am_button1: {
break;
}
}
}
};
현재는 am_button0, am_button1만 있지만 layout에 있는 모든 버튼을 위와 같이 추가한다.
모두 20개이다.
전체 코드
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button.OnClickListener buttonNumberListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.am_button0: {
break;
}
case R.id.am_button1: {
break;
}
case R.id.am_button2: {
break;
}
case R.id.am_button3: {
break;
}
case R.id.am_button4: {
break;
}
case R.id.am_button5: {
break;
}
case R.id.am_button6: {
break;
}
case R.id.am_button7: {
break;
}
case R.id.am_button8: {
break;
}
case R.id.am_button9: {
break;
}
case R.id.am_buttonClear: {
break;
}
case R.id.am_buttonCurlyBrackets: {
break;
}
case R.id.am_buttonPercentage: {
break;
}
case R.id.am_buttonDevide: {
break;
}
case R.id.am_buttonMultiple: {
break;
}
case R.id.am_buttonMinus: {
break;
}
case R.id.am_buttonPlus: {
break;
}
case R.id.am_buttonPositiveNegativeNumber: {
break;
}
case R.id.am_buttonPoint: {
break;
}
case R.id.am_buttonEqual: {
break;
}
}
}
};
}
- 버튼과 함수 연결하기
이제 우리는 사용자가 버튼을 눌렀을 때 각각의 버튼을 구분할 수 있게 되었다.
하지만 아직 버튼과 연결된 것은 아니다.
onCreate 함수 안에 아래와 같이 각각의 버튼을 꺼내서 위에서 만든 'buttonNumberListener'을 연결한다.
전체 코드
Button buttonClear = findViewById(R.id.am_buttonClear);
buttonClear.setOnClickListener(buttonNumberListener);
Button buttonCurlyBrackets = findViewById(R.id.am_buttonCurlyBrackets);
buttonCurlyBrackets.setOnClickListener(buttonNumberListener);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button.OnClickListener buttonNumberListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.am_button0: {
break;
}
case R.id.am_button1: {
break;
}
case R.id.am_button2: {
break;
}
case R.id.am_button3: {
break;
}
case R.id.am_button4: {
break;
}
case R.id.am_button5: {
break;
}
case R.id.am_button6: {
break;
}
case R.id.am_button7: {
break;
}
case R.id.am_button8: {
break;
}
case R.id.am_button9: {
break;
}
case R.id.am_buttonClear: {
break;
}
case R.id.am_buttonCurlyBrackets: {
break;
}
case R.id.am_buttonPercentage: {
break;
}
case R.id.am_buttonDevide: {
break;
}
case R.id.am_buttonMultiple: {
break;
}
case R.id.am_buttonMinus: {
break;
}
case R.id.am_buttonPlus: {
break;
}
case R.id.am_buttonPositiveNegativeNumber: {
break;
}
case R.id.am_buttonPoint: {
break;
}
case R.id.am_buttonEqual: {
break;
}
}
}
};
//C, 0, %, /
Button buttonClear = findViewById(R.id.am_buttonClear);
buttonClear.setOnClickListener(buttonNumberListener);
Button buttonCurlyBrackets = findViewById(R.id.am_buttonCurlyBrackets);
buttonCurlyBrackets.setOnClickListener(buttonNumberListener);
Button buttonPercentage = findViewById(R.id.am_buttonPercentage);
buttonPercentage.setOnClickListener(buttonNumberListener);
Button buttonDevide = findViewById(R.id.am_buttonDevide);
buttonDevide.setOnClickListener(buttonNumberListener);
// 7, 8, 9, *
Button button7 = findViewById(R.id.am_button7);
button7.setOnClickListener(buttonNumberListener);
Button button8 = findViewById(R.id.am_button8);
button8.setOnClickListener(buttonNumberListener);
Button button9 = findViewById(R.id.am_button9);
button9.setOnClickListener(buttonNumberListener);
Button buttonMultiple = findViewById(R.id.am_buttonMultiple);
buttonMultiple.setOnClickListener(buttonNumberListener);
// 4, 5, 6, -
Button button4 = findViewById(R.id.am_button4);
button4.setOnClickListener(buttonNumberListener);
Button button5 = findViewById(R.id.am_button5);
button5.setOnClickListener(buttonNumberListener);
Button button6 = findViewById(R.id.am_button6);
button6.setOnClickListener(buttonNumberListener);
Button buttonMinus = findViewById(R.id.am_buttonMinus);
buttonMinus.setOnClickListener(buttonNumberListener);
// 1, 2, 3, +
Button button1 = findViewById(R.id.am_button1);
button1.setOnClickListener(buttonNumberListener);
Button button2 = findViewById(R.id.am_button2);
button2.setOnClickListener(buttonNumberListener);
Button button3 = findViewById(R.id.am_button3);
button3.setOnClickListener(buttonNumberListener);
Button buttonPlus = findViewById(R.id.am_buttonPlus);
buttonPlus.setOnClickListener(buttonNumberListener);
// +/-, 0, ., =
Button buttonNegativePositive = findViewById(R.id.am_buttonPositiveNegativeNumber);
buttonNegativePositive.setOnClickListener(buttonNumberListener);
Button button0 = findViewById(R.id.am_button0);
button0.setOnClickListener(buttonNumberListener);
Button buttonPoint = findViewById(R.id.am_buttonPoint);
buttonPoint.setOnClickListener(buttonNumberListener);
Button buttonEqual = findViewById(R.id.am_buttonEqual);
buttonEqual.setOnClickListener(buttonNumberListener);
2. 확인하기
Toast를 사용하여 Button이 눌린 것을 확인 한다.
아래와 같이 am_button0 아래에 코드를 넣는다.
Toast.makeText(MainActivity.this, "Button0", Toast.LENGTH_LONG).show();
case R.id.am_button0: {
Toast.makeText(MainActivity.this, "Button0", Toast.LENGTH_LONG).show();
break;
}
핸드폰이 연결된 상태에서 앱을 실행한다.
핸드폰에서 실행 후 '0'이 표시된 버튼을 누른다.
'Button0' 이 표시된다.
다음 편에는 버튼을 실행하여 화면에 표시되는 기능이 추가된다.