728x90
대화상자는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 작은 창이다.
대화상자는 화면을 가득 채우지 않으며 보통은 사용자가 다음으로 계속 진행하기 전에 조치를 취해야 하는 모달 이벤트에 사용된다.
시나리오
- 대화상자를 통해 상태 메시지를 설정한다.
<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);
}
댓글