이번 포스트에서는 안드로이드에서 쉽게 메시지를 보여 줄 수 있는 두 가지 클래스에 대해서 알아 도록 하겠다.

프로그램은 아래와 같다.

이 프로그램은 AlertDialog 와 Toast 메시지를 띄우는 프로그램이다.

 

먼저 레이아웃 소스를 보자.

 

- main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <Button android:layout_height="wrap_content" android:id="@+id/dialogBtn"
        android:layout_gravity="center" android:layout_width="200px"
        android:text="AlertDialog"></Button>
    <Button android:layout_height="wrap_content"
        android:layout_gravity="center" android:layout_width="200px"
        android:id="@+id/toastBtn" android:text="Toast"></Button>

</LinearLayout>

 

 

다음은 Activity 소스를 보자.

 

- MainActivity.java

package net.cranix.android.uitest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button dialogBtn = (Button)findViewById(R.id.dialogBtn);
        dialogBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
                alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i(getResources().getString(R.string.app_name), "OK");
                    }
                });
                alertDialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i(getResources().getString(R.string.app_name), "CANCEL");
                    }
                });
                alertDialog.setTitle("alert");
                alertDialog.setMessage("testMessage");
                alertDialog.show();

            }           
        });
        Button toastBtn = (Button)findViewById(R.id.toastBtn);
        toastBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "toast!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

 

 

AlertDialog 는 생성자가 protected 로 되어있다. 그래서 해당 클래스를 쓰려면 상속받아서 만드는 수 밖에 없는데 안드로이드에서는 기본적으로 AlertDialog.Builder 라는 클래스를 제공해서 쉽게 생성 할 수 있도록 도와주고 있다.

위에서 보는것과 같이 Builder 클래스를 이용하면 ok,cancel 과 같은 기존의 alert 상자에서 볼 수 있었던 버튼들을 직접 Button 을생성해서 위치 시키지 않아도 쉽게 추가 할 수있는 setPositiveButton  이나 setNegativeButton 을 제공한다.

또한 setTitle 과 setMessage 메소드를 제공해서 다른 자잘한 셋팅에 신경쓸 필요 없이 자동으로 만들어 준다.

 

Toast 메시지는 특정 메시지를 일정 시간동안 출력하고 알아서 사라지게 된다.

위와 같은 형태로 출력이 되며 AlertDialog 처럼 사용자와 상호작용 할 수 있도록 지원하지 않는다.

또한 Toast 메시지는 뜨기는 하지만 포커스가 해당 메시지로 이동하지는 않는다.

이것은 간단한 정보를 출력 할 때 많이 쓰이고 디버그 용으로도 많이 쓰인다.

출력되는 정보가 간단한 만큼 가장 간단하게 사용할 수 있다.

Toast.makeToast 라는 static 함수로서 생성되며 위의 예제에서 처럼 .show() 함수까지 함께 써서 한줄로 사용하는것이 일반적이다.

'알짜정보 > Android' 카테고리의 다른 글

android 소스 다운로드 받기  (40) 2010.03.18
goldfish 커널 다운로드 및 컴파일 하기  (818) 2010.03.16
android 커널부팅부터 액티비티까지  (21) 2010.03.12
SharedPreferences  (1016) 2010.03.01
Activity 간의 통신  (121) 2010.02.25
by cranix 2010. 3. 1. 04:11
| 1 |