본문 바로가기
Front-end/안드로이드

안드로이드 Firebase

by 노아론 2018. 2. 17.
Welcome file

안드로이드 Firebase

아이디와 비밀번호 등록하는 예제

후에 잊어버렸을 때를 위해 메모해둔다

MainActivity

package test.roharon.com.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.Random;


public class MainActivity extends AppCompatActivity {


    FirebaseDatabase database = FirebaseDatabase.getInstance();
    
    DatabaseReference myRef = database.getReference("Test");
    //데이터베이스의 Test 에 지정.
    

    TextView textView;
    TextView userId;
    TextView password;
    
    private void writeNewUser(String userId,String password)
    {
        User user = new User(userId, password);

        myRef.child("users").child(userId).setValue(user);
        //		Test/users/유저아이디/User클래스 변수들
        
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=findViewById(R.id.helloText);


        Button button = (Button)findViewById(R.id.submit);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                userId = (TextView)findViewById(R.id.userId);
                password = (TextView)findViewById(R.id.password);

                writeNewUser(userId.getText().toString(),password.getText().toString());
      
            }
        });
        // 버튼을 눌렀을때 userId와 password를 입력받고 writeNewUser함수에 넘긴다.
        //그럼 User클래스 생성과 함께 Firebase에 저장된다.
        // ! 여기서 오류났었는데 .getText() 이것만 하고 .toString()은 안해줘서 발생했다.

    }

    protected void onStart()
    {
        super.onStart();

        myRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
            @Override
            public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
                String name = dataSnapshot.child("main").getValue(String.class);
                textView.setText(name);
                // 이것은 공지사항 기능으로 넣은거다.
                // userId와 password는 액티비티 생성 후에 등록되지만 공지사항은 시작부터 나와야 하기때문.
                //  /Test/main 의 Value값을 부른다.
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }


}


파이어베이스 json 구조

{
  "Test" : {
    "main" : "안녕하세요 공지입니다",
    "users" : {
      "sss" : {
        "password" : "패스워드aaaa",
        "username" : "sss"
      },
      "내아이디" : {
        "password" : "내패스워드",
        "username" : "내아이디"
      }
    }
  }
}


User클래스

package test.roharon.com.myapplication;

import com.google.firebase.database.IgnoreExtraProperties;

/**
 * Created by roharon on 2018-02-17.
 */
@IgnoreExtraProperties
public class User {

    public String username;
    public String password;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

}



레이아웃

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="test.roharon.com.myapplication.MainActivity">

    <TextView
        android:id="@+id/helloText"
        android:layout_width="208dp"
        android:layout_height="154dp"
        android:layout_marginStart="88dp"
        android:layout_marginTop="320dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/userId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="28dp"
        android:layout_marginTop="86dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="아이디"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="40dp"
        android:layout_marginStart="28dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="패스워드"
        app:layout_constraintBottom_toTopOf="@+id/submit"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="28dp"
        android:text="등록"
        app:layout_constraintBottom_toTopOf="@+id/helloText"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>





'Front-end > 안드로이드' 카테고리의 다른 글

안드로이드 drawble, wrap|match  (0) 2018.02.18

댓글