본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , 채팅 구현하기 | 대화상자 AlertDialog 채팅 프로필 상태메시지

by javapp 자바앱 2021. 2. 14.
728x90

 

 

대화상자  |  Android 개발자  |  Android Developers

대화상자는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 작은 창입니다. 대화상자는 화면을 가득 채우지 않으며 보통은 사용자가 다음으로 계속 진행하기 전에 조

developer.android.com

대화상자는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 작은 창이다.

대화상자는 화면을 가득 채우지 않으며 보통은 사용자가 다음으로 계속 진행하기 전에 조치를 취해야 하는 모달 이벤트에 사용된다.

 

 

시나리오

  • 대화상자를 통해 상태 메시지를 설정한다.

 

대화상자를 통해 상태 메시지를 설정한다.

 

<R.layout.dialog_comment>

다이알로그 레이아웃 생성

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

    <ImageView
        android:id="@+id/dialog_comment_imageview"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:src="@drawable/g3"
        android:scaleType="centerCrop"
        />
    <EditText
        android:id="@+id/dialog_comment_edittext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="4dp"
        android:hint="상태 메시지를 입력해주세요."
        />

</LinearLayout>

 

대화상자 구현

        builder = new AlertDialog.Builder(context);

        LayoutInflater layoutInflater = getActivity().getLayoutInflater();
        View view = layoutInflater.inflate(R.layout.dialog_comment,null);
        dialogEditText = (EditText)view.findViewById(R.id.dialog_comment_edittext);


        builder.setView(view).setPositiveButton("확인", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Map<String,Object> commentMap = new HashMap<>();
                commentMap.put("comment", dialogEditText.getText().toString());
                String uid= mAuth.getCurrentUser().getUid();
                mDatabase.getReference().child("users").child(uid).updateChildren(commentMap);
            }
        }).setNegativeButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });

        builder.show();

AlertDialog.Builder 를 통해 대화상자 생성

 

mDatabase.getReference().child("users").child(uid).updateChildren(commentMap);

파이어베이스 데이터베이스에 

users에 자신의 아이디 하위 속성으로 상태메시지를 저장한다.

 

 

데이터를 받을 클래스에 

String comment 추가

public class UserModel
{
    public String name;
    public String profileImgUrl;
    public String uid;
    public String pushToken;
    public String comment;
}

 

 

자신의 프로필을 읽는 함수

    private void setMyProfile()
    {
        //자신 조회
        String myUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
        FirebaseDatabase.getInstance().getReference().child("users").child(myUid).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                UserModel user = snapshot.getValue(UserModel.class);
                Glide.with(myImageView.getContext())
                        .load(user.profileImgUrl)
                        .apply(new RequestOptions().circleCrop())
                        .into(myImageView);
                myTextViewName.setText(user.name);

                if(user.comment != null) {
                    myTextViewComment.setText(user.comment);
                }

            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }

null 값에 유의하여 읽어들인다.

if(user.comment != null) {
 myTextViewComment.setText(user.comment);
}

 

i luv u 상태메시지 추가

댓글