HOME > android > basic

안드로이드 - Toast & Log를 출력하는 방법

By JS | 19 Aug 2017

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

Toast API에 대한 간단한 설명입니다.

  1. Toast.makeText()는 Toast 객체를 생성합니다.
    Parameter로 Context, Text, Duration을 입력합니다.

    • Context는 App 또는 Activity의 ID라고 생각할 수 있습니다. (중요한 것은 나중에 소개하도록 하겠습니다)
    • Text는 화면에 보여질 문자열입니다.
    • Duration은 화면에 Toast가 보여지는 시간입니다.
      (Toast.LENGTHSHORT와 Toast.LENGTHLONG이 있습니다)
  2. 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)을 선택해주세요. 자신의 앱이 실행중이 아니면 리스트에 없을 수 도 있습니다. 없다면 앱을 실행후 확인해보세요.

toast

그리고 오른쪽화면에서 VerboseShow only selected application을 선택해주세요. 이렇게 설정하시면 자신의 앱에서 출력되는 모든 로그를 볼 수 있습니다. toast

아래 코드처럼 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가 있습니다. 이 내용으로 자신의 앱이 의도대로 동작했는지 또는 버그가 있는지 등을 디버깅할 수 있습니다. toast

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에서 확인하실 수 있습니다.

참고