728x90
반응형

알림창!

헬테이커 스티커 만들때 유용하게 쓰일지도 모르겠다

시작은 언제나 Empty Activity로 프로젝트 생성

 

이번엔 리스트와 종료 두개의 버튼을 만들고 ID를 할당한다

 

코드는 역시나 어렴풋이 감만 잡히고 뭔지 잘 모르겟다

package com.example.tutorial3;

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.Toast;

public class MainActivity extends AppCompatActivity {

    private String[] items = {"망고주스", "토마토주스", "포도주스"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button listButton = (Button) findViewById(R.id.listButton);
        listButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("리스트");
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int i) {
                        Toast.makeText(getApplicationContext(), items[i], Toast.LENGTH_SHORT).show();
                    }
                });
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
            }
        });
    }
}

builder는 아마 이걸 말하는 것 같고

 

Toast는 이렇게 아래에 뜨는걸 말하는 것 같다

 

다음은 종료버튼에 관련된 함수를 추가해준다

...
        Button exitButton = (Button) findViewById(R.id.exitButton);
        exitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setMessage("정말로 종료하시겠습니까?");
                builder.setTitle("종료 알림창")
                        .setCancelable(false)
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int i) {
                                finish();
                            }
                        })
                        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int i) {
                                dialog.cancel();
                            }
                    });
                AlertDialog alert = builder.create();
                alert.setTitle("종료 알림창");
                alert.show();
            }
        });

 builder는 아까와 마찬가지로 알림창 전체를 뜻하는 게 맞는것 같다

setCancelable(false)로 뒤로가기를 눌러도 알림창이 꺼지지 않는다

PositiveButton과 NegativeButton은 보통 Yes, No 알림창에 쓰이는 그거다

저 코드가 OnClickListener때문인지 너무 가독성이 좋지 않은것 같다

익숙하지 않아서 그런가

보통 코드를 짤때 저런건 아래에 따로 선언했었으니 조금 불편하다...

 

 

그리고 아쉽게도 내가 생각하던 알림창은 아니었기에 캐릭터 선택에나 쓸것 같다