2016년 2월 18일 목요일

Android Studio : 클릭 이벤트 처리 및 팝업창(Dialog) 띄우기

클릭 이벤트 처리하기...


일단 원하는 화면에 버튼을 하나 추가한다. (여기서는 버튼 id 를 btnAlert 로 지정했음)
그리고 그 화면을 불러오는 액티비티에서...


1. 클릭이벤트를 사용하려는 액티비티에 "implements View.OnClickListener" 를 지정한다.
2. onClick() 이벤트를 정의 한다.
3. 액티비티가 로드 될때 클릭 이벤트가 발생하기 원하는 오브젝트를 찾아 (여기서는 버튼) 클릭 이벤트를 지정한다.

package kr.son10001.bcn.myson10001;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.btnAlert).setOnClickListener(this);
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnAlert:
                new AlertDialog.Builder(this)
                        .setTitle("알람 팝업")
                        .setMessage("팝업 창의 내용입니다.\n\n TEST!!")
                        .setNeutralButton("닫기", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dlg, int sumthin) {
                            }
                        })
                        .show(); // 팝업창 보여줌
                break;
        }
    }
}


이렇게 하고 실행하면...


이렇게 나타난 화면에서 버튼을 클릭하면...


이렇게 팝업창이 나타난다.

참고로 클릭이벤트를 사용하려는 액티비티에 "implements View.OnClickListener" 를 반드시 지정할 필요는 없는데...


package kr.son10001.bcn.myson10001;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.btnAlert).setOnClickListener(mClickListener);
    }

    Button.OnClickListener mClickListener = new View.OnClickListener() {
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btnAlert:
                    new AlertDialog.Builder(MainActivity.this)
                            .setTitle("알람 팝업")
                            .setMessage("팝업 창의 내용입니다.\n\n TEST!!")
                            .setNeutralButton("닫기", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dlg, int sumthin) {
                                }
                            })
                            .show(); // 팝업창 보여줌

                    break;
            }
        }
    };
}



이렇게 implements 를 지정하지 않고 직접 리스너를 지정해줘도 된다.
이렇게 해도 똑같이 동작한다.