50DAY / Android / 버튼 클릭 이벤트 처리, 터치이벤트 처리
버튼 클릭 이벤트 처리
1) 액티비티에서 View타입을 매개변수로받는 메서드 생성 후
레이아웃에서 메서드 호출설정
레이아웃
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.firstapp.firstapp.MainActivity">
<Button
android:id="@+id/hellobtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"android:onClick="testOnClick"/>
</android.support.constraint.ConstraintLayout>
액티비티
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
}
public void testonClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_SHORT).show();
}
}
}
2)이벤트리스너를 사용
공통레이아웃
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.firstapp.firstapp.MainActivity">
<Button
android:id="@+id/hellobtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"
</android.support.constraint.ConstraintLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(new MyListener());
}
class MyListener implements View.OnClickListener {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_SHORT).show();
}
}
}
3)익명클래스를 사용
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "EventTest Click", Toast.LENGTH_LONG).show();
}
});
}
}
4)액티비티 스스로 이벤트리스너 구현
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
Button button = (Button)findViewById(id.hellobtn);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(this, "EventTest Click", Toast.LENGTH_LONG).show();
}
}
터치 이벤트 처리
안드로이드는 문자열을 다룰때 자바의 String타입이 아닌 CharSequence라는 자체 문자열 타입을 사용한다.
그래서 안드로이에서 생성된 문자열에 자바API를 사용할려면 먼저 toString()메서드를 이용하여 CharSequence타입을 String타입으로 변경해야 한다.