안드로이드 버튼 클릭 이벤트 예제
버튼 클릭 이벤트에는 3가지 방식이 있다.
- 익명 클래스를 사용하여 버튼에 리스너 객체를 설정하는 방법
- 버튼 리스너를 액티비티에 구현하고 이 리스너를 버튼에 설정하는 방법
- 레이아웃 xml 파일의 button 속성에 onClick요소를 추가하는 방법
/res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="입력"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
/java/com.example.project1/MainActivity.java
방법 1. 익명 클래스를 사용하여 버튼에 리스너 객체를 설정
//import생략
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edit = (EditText) findViewById(R.id.edit);
final TextView text = (TextView) findViewById(R.id.text);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
text.setText(edit.getText());
}
});
}
}
방법 2. 버튼 리스너를 액티비티에 구현하고 이 리스너를 버튼에 설정하는 방법
//import생략
public class MainActivity extends AppCompatActivity {
EditText edit;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
text = (TextView) findViewById(R.id.text);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
text.setText(edit.getText());
}
}
방법 3. 레이아웃 xml 파일의 button 속성에 onClick요소를 추가하는 방법
/res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick-"맘대로이름지정"
android:text="입력"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
/java/com.example.project1/MainActivity.java
//import생략
public class MainActivity extends AppCompatActivity {
EditText edit;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
text = (TextView) findViewById(R.id.text);
}
public void 맘대로이름지정(View v) {
text.setText(edit.getText());
}
}
+
익명 클래스에서의 final
final은 주로 'final int'와 같이 상수를 만들 때 주로 쓴다. 변하지 않는 값을 지정할 때 쓴다는 것이다.
그리고 익명클래스 내에서는 변하지 않는 값만 쓸 수 있기에 버튼 클릭이벤트 첫 번째 방법에서 final을 안 쓰면 오류가 난다. final을 써서 익명 클래스에 접근할 수 있도록 하기 때문이다.
+
멤버 변수
final 안 쓰려면 onCreate 위에 부분에 쓰면 됨. < 이렇게 쓰는 걸 '멤버 변수'라고 하고. 멤버 변수는 항상 접근할 수 있으니까 가져다 쓰면 된다.
'프로젝트 기록 > android' 카테고리의 다른 글
[android/안드로이드] Dialog button 버튼 눌러 다이얼로그 띄우기 예제 (1) | 2020.01.08 |
---|---|
[android/안드로이드] 액티비티 이동하기 간단 예제 (0) | 2020.01.06 |
[android/안드로이드] 버튼 커스터마이징하기, selector (0) | 2020.01.02 |
[android/안드로이드] EditText (0) | 2019.12.29 |
[android/안드로이드] link걸기 (0) | 2019.12.29 |