본문 바로가기

안드로이드

switch case문을 이용한 버튼 이벤트

안드로이드에서 개발하다보면 여러개의 버튼에 이벤트를 넣을때가 종종있다.


버튼에 이벤트를 넣다보면 코드가 길어지는 것을 볼 수 있다.


그래서 switch case를 이용해 코드를 조금 줄여보고자 한다.


먼저 xml파일에 다음과 같이 두개의 버튼을 생성하자





일반적으로는 다음과 같이 코드를 작성할 것이다. 하지만 이 방식으로 작성하면 버튼의 개수가 많아질수록 코드의 길이가 점점 더 길어진다.

public class MainActivity extends AppCompatActivity {

Button first_btn, second_btn;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);

//각버튼 아이디 매칭
first_btn = findViewById(R.id.first_btn);
second_btn = findViewById(R.id.second_btn);

//첫번째 버튼 행동
first_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});


second_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});

}




반면 switch case를 이용하면 다음과 같이 소스코드가 조금 줄어든다.

public class MainActivity extends AppCompatActivity {


Button first_btn, second_btn;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);

//각버튼 아이디 매칭
first_btn = findViewById(R.id.first_btn);
second_btn = findViewById(R.id.second_btn);

Button.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
//첫번째 버튼 행동
case R.id.first_btn:
// Ex)Intent intent = new Intent(MainActivity.this,SubActivity.class);
// startActivity(intent);
break;
//두번째 버튼 행동
case R.id.second_btn:
break;
}
}
};

first_btn.setOnClickListener(onClickListener);
second_btn.setOnClickListener(onClickListener);
}
}