관리 메뉴

java,javascript,android,php,sql,공부용,메모용

안드로이드 알림 대화상자 보여주기 / Android Studio / 안드로이드 앱만들기 공부 17 본문

모바일/안드로이드앱

안드로이드 알림 대화상자 보여주기 / Android Studio / 안드로이드 앱만들기 공부 17

yy_dd2 2021. 2. 26. 17:31
반응형

알림 대화상자 보여주기

- 토스트와 함께 많이 사용된다

- 사용자에게 확인을 받거나 선택하게 해야할 때 사용

- 입력을 받는 것보다는 메시지를 전달하는 역할로 사용 '예' '아니오' 같은 응답처리

 

1. SampleDialog 프로젝트 생성

2. activity_main.xml에 텍스트뷰와 버튼하나 추가 내용추가

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/textShowMessage"
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="@string/buttonFloat"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

/res/values/string.xml

<resources>
    <string name="app_name">SampleDialong</string>
    <string name="textShowMessage">버튼을 누르면 대화상자가 뜹니다.</string>
    <string name="buttonFloat">띄우기</string>
</resources>

3. MainActivity.java 코드 추가

package com.togapp.sampledialong;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                showMessage();
            }
        });

    }
    // public class MainActivity 에서만 사용가능한 showMessage()
    private void showMessage(){
        // 다이어로그 만들기 빌더 객체 생성
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("안내");
        builder.setMessage("알림창 확인을 해봅시다");
        // /app/res/drawable 폴더에 있는 icon 불러오기
        builder.setIcon(android.R.drawable.ic_dialog_alert);

        // "예" 버튼 설정
        builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                String message = "예 버튼이 눌렸다";
                textView.setText(message);
            }
        });
        // "취소" 버튼 설정
        builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                String message = "취소 버튼이 눌림";
                textView.setText(message);
            }
        });
        // "아니오" 버튼 설정
        builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                String m = "아니오 버튼 눌림";
                textView.setText(m);
            }
        });

        // 다이어로그 대화상자 객체 생성하고 보여주기
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    /*
    public  : 모든  package에서 해당 class로 접근이 가능하다.
              (클래스내부, 패키지, 상속받은클래스, 이외의영역)
    private  : 자신을 포함한 package에서만 해당 class로 접근이 가능하다.
               (클래스내부)
    protected  : 상속받은 class 에서만 해당 class로 접근이 가능하다.
                 (클래스내부, 패키지)

    */
}

- AlertDialog의 import 구문은 설치했던 appcompat 패키지 파일로 임폴트한다

- builder.setPositiveButton : 예버튼 설정

- builder.setNeutralButton : 취소버튼 설정

- builder.setNegativeButton : 아니오버튼 설정

 

...button("text", new DialogInterface.OnClickListener(){} OnClickListener를 사용해서 textView에 메시지를 보여줄수있음

 

결과

 

반응형
Comments