안드로이드에서는 한 Activity마다 다양한 버튼이 존재하고 그 버튼마다 다른 기능을 수행하여야 하는 경우가 매우 많다.
그래서 오늘의 메모는
오늘은 각각의 버튼을 클릭해서 토스트 메시지를 띄우는법을 만들기 예제를 만들기!
생각한 방법은 3가지
1. 버튼에 OnClickListner를 선언 할 때 각각의 버튼에 다른 기능을 부여한다.
2. 액티비티 자체에 OnClickListner를 impliment 해주고 조건문을 통해 처리한다.
2-1: if else
2-2: switch
다른 효율적인 방법이 있다면 알려주세요!
필요 조건:
1. activity에 main_button1, main_button1라는 id를 가진 버튼을 2개 생성
방법:
1. 버튼에 OnclickListner를 선언 할 때 각각의 버튼에 다른 기능을 부여한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class MainActivity extends AppCompatActivity { Button button1; Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = findViewById(R.id.main_button1); button2 = findViewById(R.id.main_button2); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "버튼 1을 클릭하였습니다.", Toast.LENGTH_LONG).show(); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "버튼 2을 클릭하였습니다.", Toast.LENGTH_LONG).show(); } }); } } | cs |
설명:
각각의 버튼에 OnClickListener를 선언 해줄 때 (줄10, 16) 각각의 버튼에 새로운 기능을 부여해준다.
단점:
각각의 버튼에 새로운 OnClickListener마다 계속 기능을 지정해주면 너무 코드가 복잡...
2-1. 액티비티 자체에 OnclickListner를 impliment 해주고 조건문을 통해 처리한다.(if else)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button button1; Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = findViewById(R.id.main_button1); button2 = findViewById(R.id.main_button2); button1.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View view) { if (view.getId() == R.id.main_button1) { Toast.makeText(MainActivity.this, "버튼 1을 클릭하였습니다.", Toast.LENGTH_LONG).show(); } else if (view.getId() == R.id.main_button2) { Toast.makeText(MainActivity.this, "버튼 2을 클릭하였습니다.", Toast.LENGTH_LONG).show(); } else { //?? } } } | cs |
설명:
MainActivity에 View.OnClickListener를 Impliment를 해준 후 각각의 버튼에 OnclickListener를 선언 (줄14, 15)
MainActivity에 Override를 해준 후 (줄 19) 클릭된 view가 뭔지 파악 후 (줄 20에 View view 라고 되어진 부분)
If else 에서 view의 id를 파악해서 각각의 조건을 파악한 후 기능을 부여한다.
단점:
if else를 길게 나열하다 보니까 Id를 파악하기 힘듬
2-1. 액티비티 자체에 OnclickListner를 impliment 해주고 조건문을 통해 처리한다.(switch)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button button1; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = findViewById(R.id.main_button1); button2 = findViewById(R.id.main_button2); button1.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.main_button1: Toast.makeText(MainActivity.this, "버튼 1을 클릭하였습니다.", Toast.LENGTH_LONG).show(); break; case R.id.main_button2: Toast.makeText(MainActivity.this, "버튼 2을 클릭하였습니다.", Toast.LENGTH_LONG).show(); break; default: break; } } } |
설명:
If else와 모든곳이 같지만 If else가 아닌 switch를 통해 처리해줌 (줄20)
개인적으로 이 방법이 가장 보기도 좋고 정리도 하기 좋다고 생각되어서 이 방법을 사용함
'ANDROID - JAVA' 카테고리의 다른 글
[ANDROID - JAVA] GMT 시간 TimeZone 설정하기 (0) | 2019.03.15 |
---|---|
[ANDROID - JAVA] 커스텀 Listview 만들기 (0) | 2019.03.14 |
[ANDROID - JAVA] 디바이스에 데이터 저장하기 (SharedPreferences 사용하기) (0) | 2019.01.19 |
[ANDROID - JAVA] Picasso 이미지 라이브러리 사용하기 (URL로 이미지 보여주기) (0) | 2019.01.17 |
[ANDROID - JAVA] 원하는 크기의 팝업창, 다이얼로그 만들기 (0) | 2019.01.16 |