Toast
이 장에서는 Toast와 Log 출력 방법에 대해서 알아봅니다. Toast는 사용자에게 알림 등의 메시지를 주는 용도로 사용합니다. Log는 개발을 하면서 이 코드가 정상적으로 작동하는지 확인하는 디버깅 용도로 사용합니다.
먼저 Toast에 대해 알아보겠습니다. Toast는 화면 아래쪽에 뜨는 메시지입니다. 지난 Project의 SubActivity01에서 onCreate() 함수에 아래처럼 Toast 코드를 입력해보세요. 새로운 객체인 Toast를 사용하기 때문에 import도 추가해주셔야 합니다.
package com.example.xyz.myapplication;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
/**
* Created by XYZ on 2017-08-13.
*/
public class SubActivity01 extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub01);
Context context = getApplicationContext();
CharSequence text = "SubActivity01이 실행되었습니다";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
이제 앱을 실행시켜 확인해보세요. SubActivity01의 onCreate()에 넣었기 때문에 이 Activity가 실행될 때 Toast가 보입니다.
Toast API에 대한 간단한 설명입니다.
- Toast.makeText()는 Toast 객체를 생성합니다.
Parameter로 Context, Text, Duration을 입력합니다.- Context는 App 또는 Activity의 ID라고 생각할 수 있습니다. (중요한 것은 나중에 소개하도록 하겠습니다)
- Text는 화면에 보여질 문자열입니다.
- Duration은 화면에 Toast가 보여지는 시간입니다.
(Toast.LENGTH_SHORT와 Toast.LENGTH_LONG이 있습니다)
- Toast.show()는 생성한 Toast객체를 화면에 보여주도록 하는 함수입니다.
이 함수를 호출하지 않으면 화면에 나타나지 않습니다.
위의 5줄의 코드가 길어보인다면 아래처럼 간단히 1줄로 쓸 수도 있습니다.
Toast.makeText(this, "SubActivity01이 실행되었습니다", Toast.LENGTH_SHORT).show();
Toast의 예제와 API에 대해서 간단히 알아보았습니다. Toast에 대해서 좀 더 알고 싶으세요? Toast: Android API reference에 Toast에 대한 자세한 설명이 있습니다. 그리고 Toast: Android API guide에 간단한 예제들도 있습니다.
Log
Device 연결 또는 Emualator(Virtual machine)를 실행한 상태에서 Android Studio 하단의 Android Monitor 탭을 클릭하시고 아래 화면처럼 Logcat탭을 누르고 드롭메뉴에서 **자신의 앱(package name)**을 선택해주세요. 자신의 앱이 실행중이 아니면 리스트에 없을 수 도 있습니다. 없다면 앱을 실행후 확인해보세요.
그리고 오른쪽화면에서 Verbose와 Show only selected application을 선택해주세요. 이렇게 설정하시면 자신의 앱에서 출력되는 모든 로그를 볼 수 있습니다.
아래 코드처럼 TAG 객체를 정의하고 Log API를 사용하여 코드를 입력해보세요. Log 객체를 처음 사용하는 것이기 때문에 import로 객체를 추가해주셔야 합니다.
package com.example.xyz.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v(TAG, "onCreate: activity가 실행되었습니다.");
}
void onButtonClick(View v) {
Intent intent = new Intent(this, SubActivity01.class);
startActivity(intent);
Log.d(TAG, "onButtonClick: SubActivity01을 실행시켰습니다.");
}
}
SubActivity01에도 Log 코드를 입력해보세요.
package com.example.xyz.myapplication;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
/**
* Created by XYZ on 2017-08-13.
*/
public class SubActivity01 extends AppCompatActivity {
public static final String TAG = "SubActivity01";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub01);
Context context = getApplicationContext();
CharSequence text = "SubActivity01이 실행되었습니다";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Log.d(TAG, "onCreate: SubActivity01이 실행되었습니다.");
}
}
이제 실행해서 확인해보세요.
각각의 로그는 Log가 있는 함수가 실행될 때 출력됩니다. 로그를 보시면 날짜, 시간, TAG, Message가 있습니다. 이 내용으로 자신의 앱이 의도대로 동작했는지 또는 버그가 있는지 등을 디버깅할 수 있습니다.
Log의 종류는 보통 6개가 있고 우선순위가 가장 낮은 것부터 높은 순서로 정리하였습니다. Log API로 5종류의 Log를 출력시킬 수 있고, Assert는 문제가 있을 때 출력되는 Log로 Log API와 사용방법이 다릅니다.
이름 | Method |
---|---|
Verbose(우선순위 가장 낮음) | Log.v(String tag, String msg) |
Debug | Log.d(String tag, String msg) |
Info | Log.i(String tag, String msg) |
Warning | Log.w(String tag, String msg) |
Error | Log.e(String tag, String msg) |
Assert(우선순위 가장 높음) | Assert: Android API reference를 참고해주세요 |
Log API의 일반적인 사용방법은 Parameter로 Tag와 Message를 넣으면 됩니다. 그 외에 Overloding된 Method도 있습니다. 자세한 것은 Log: Android API reference를 참고해주세요.
정리
Log와 Toast는 앱을 개발할 때 디버깅 등으로 자주 사용하기 때문에 먼저 알아보았습니다.
이 튜토리얼에서 사용한 코드는 GitHub: Toast & Log에서 확인하실 수 있습니다.
참고
Related Posts
- Android 14 - 사진/동영상 파일, 일부 접근 권한 소개
- Android - adb push, pull로 파일 복사, 다운로드
- Android 14 - 암시적 인텐트 변경사항 및 문제 해결
- Jetpack Compose - Row와 Column
- Android 13, AOSP 오픈소스 다운로드 및 빌드
- Android 13 - 세분화된 미디어 파일 권한
- Android 13에서 Notification 권한 요청, 알림 띄우기
- Android 13에서 'Access blocked: ComponentInfo' 에러 해결
- 에러 해결: android gradle plugin requires java 11 to run. you are currently using java 1.8.
- 안드로이드 - 코루틴과 Retrofit으로 비동기 통신 예제
- 안드로이드 - 코루틴으로 URL 이미지 불러오기
- Android - 진동, Vibrator, VibrationEffect 예제
- Some problems were found with the configuration of task 에러 수정
- Query method parameters should either be a type that can be converted into a database column or a List
- 우분투에서 Android 12 오픈소스 다운로드 및 빌드
- Android - ViewModel을 생성하는 방법
- Android - Transformations.map(), switchMap() 차이점
- Android - Transformations.distinctUntilChanged() 소개
- Android - TabLayout 구현 방법 (+ ViewPager2)
- Android - 휴대폰 전화번호 가져오는 방법
- Android 12 - Splash Screens 알아보기
- Android 12 - Incremental Install (Play as you Download) 소개
- Android - adb 명령어로 bugreport 로그 파일 추출
- Android - adb 명령어로 App 데이터 삭제
- Android - adb 명령어로 앱 비활성화, 활성화
- Android - adb 명령어로 특정 패키지의 PID 찾기
- Android - adb 명령어로 퍼미션 Grant 또는 Revoke
- Android - adb 명령어로 apk 설치, 삭제
- Android - adb 명령어로 특정 패키지의 프로세스 종료
- Android - adb 명령어로 screen capture 저장
- Android - adb 명령어로 System 앱 삭제, 설치
- Android - adb 명령어로 settings value 확인, 변경
- Android 12 - IntentFilter의 exported 명시적 선언
- Android - adb 명령어로 공장초기화(Factory reset)
- Android - adb logcat 명령어로 로그 출력