2016-09-12 11 views
0

firebaseデータベースにユーザーの情報を格納するための活動を行っています。これは私が揃えてきたコードですが、それはどちらもサインアウト]ボタンが機能しているdatabse内の任意の値...firebaseデータベースにユーザープロファイル情報を格納する方法android

activity_profile.xmlを格納されていない

<?xml version="1.0" encoding="utf-8"?<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 

android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="www.edukeen.in.eduaspire.Home"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:text="Personal details" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/colorAccent"/> 

     <TextView 
      android:text="Name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editTextName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:text="DOB" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editDOB" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="date" 
      android:ems="10"/> 

     <TextView 
      android:text="Phone" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editphone" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="phone" 
      android:ems="10"/> 

     <TextView 
      android:text="City" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editcity" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:text="Academic details" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/colorAccent"/> 

     <TextView 
      android:text="Class/year" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editclass" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:text="Board/Graduation degree" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editboard" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:text="School/college" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editschool" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

     <TextView 
      android:text="Hobbies" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textMultiLine"/> 

     <EditText 
      android:id="@+id/edithobbies" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textMultiLine"/> 

     <TextView 
      android:text="Achievements" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <EditText 
      android:id="@+id/editachievements" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textMultiLine"/> 

     <Button 
      android:id="@+id/buttonSave" 
      android:text="Save" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/buttonsignout" 
      android:text="Sign out" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

</ScrollView> 

Profile.java

public class Profile extends AppCompatActivity { 

private Button signOut; 
private ProgressBar progressBar; 
private FirebaseAuth.AuthStateListener authListener; 
private FirebaseAuth auth; 

private Button buttonSave; 

private Firebase mref; 

private EditText editTextName; 
private EditText editDOB; 
private EditText editphone; 
private EditText editcity; 
private EditText editclass; 
private EditText editboard; 
private EditText editschool; 
private EditText edithobbies; 
private EditText editachievements; 

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 
FirebaseAuth.AuthStateListener mAuthListener; 

static final String TAG = "YOUR-TAG-NAME"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_profile); 
    Firebase.setAndroidContext(this); 

    editTextName = (EditText) findViewById(R.id.editTextName); 
    editDOB = (EditText) findViewById(R.id.editDOB); 
    editphone = (EditText) findViewById(R.id.editphone); 
    editcity = (EditText) findViewById(R.id.editcity); 
    editclass = (EditText) findViewById(R.id.editclass); 
    editboard = (EditText) findViewById(R.id.editboard); 
    editschool = (EditText) findViewById(R.id.editschool); 
    edithobbies = (EditText) findViewById(R.id.edithobbies); 
    editachievements = (EditText) findViewById(R.id.editachievements); 

    mref = new Firebase("https://*************.firebaseio.com/Users"); 

    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 
      } else { 
       // User is signed out 
       Log.d(TAG, "onAuthStateChanged:signed_out"); 
      } 
      // ... 
     } 
    }; 

    FirebaseUser userID = FirebaseAuth.getInstance().getCurrentUser(); 
    if (userID != null) { 
     buttonSave = (Button) findViewById(R.id.buttonSave); 

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

       String name = editTextName.getText().toString(); 
       Firebase Childref1 = mref.child("Name"); 
       Childref1.setValue(name); 

       String DOB = editDOB.getText().toString(); 
       Firebase Childref2 = mref.child("DOB"); 
       Childref2.setValue(DOB); 

       String Phone = editphone.getText().toString(); 
       Firebase Childref3 = mref.child("Phone"); 
       Childref3.setValue(Phone); 

       String City = editcity.getText().toString(); 
       Firebase Childref4 = mref.child("City"); 
       Childref4.setValue(City); 

       String Class = editclass.getText().toString(); 
       Firebase Childref5 = mref.child("Class"); 
       Childref5.setValue(Class); 

       String Board = editboard.getText().toString(); 
       Firebase Childref6 = mref.child("Bord"); 
       Childref6.setValue(Board); 

       String School = editschool.getText().toString(); 
       Firebase Childref7 = mref.child("School"); 
       Childref7.setValue(School); 

       String Hobbies = edithobbies.getText().toString(); 
       Firebase Childref8 = mref.child("Hobbies"); 
       Childref8.setValue(Hobbies); 

       String Achievements = editachievements.getText().toString(); 
       Firebase Childref = mref.child("Achievements"); 
       Childref.setValue(Achievements); 
      } 
     }); 
    } 

    //for signout start 
    auth = FirebaseAuth.getInstance(); 
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

    authListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser userID = firebaseAuth.getCurrentUser(); 
      if (userID == null) { 
       startActivity(new Intent(Profile.this, LoginActivity.class)); 
       finish(); 
      } 
     } 
    }; 
} 

public void signOut() { 
    auth.signOut(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    auth.addAuthStateListener(authListener); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    if (authListener != null) { 
     auth.removeAuthStateListener(authListener); 
    } 
} 
} 

画面

Profile screen

誰でも私が間違っていることを教えてもらえますか?ユーザモデルはプロファイルの詳細(feilds)によって満たされます後 は、上記のコードは、ユーザIDと、親ノードを生成し、ユーザモデルは(そのIDの値として保存されます

Map<String, Object> childUpdates = new HashMap<>(); 

myRef = database.getReference("parent_node**strong text**name").child(user_profile_id); 

myRef.child(user_profile_id).push(); 

childUpdates.put(user_profile_id, usermodel); 

myRef.updateChildren(childUpdates); 

予め

答えて

1

にありがとうございましたすなわちユーザID)は、後でそれが役立ちます:)

+0

を役に立てば幸い? onStateChangedメソッドでは? – Zen

+0

まずfirebaseインスタンスを子と一緒に取得し、それにリスナー(addListenerForSingleValueEvent)を追加すると、Datachangeの名前でオーバーライドされたメソッドが取得され、その内部のfirebaseにデータがポストされます。 https://github.com/firebase/quickstart-android/blob/master/database/app/src/main/java/com/google/firebase/quickstart/database/PostDetailActivity.java – pratik

-1

置き、すべての値は、あなたがハッシュマップにしたい

はホープFirebaseデータベースのキーとしてユーザーIDを呼び出すことにより、これらのプロファイルの詳細を取得し、それらのすべてを保存することが使用してsetValue関数

また、mrefに小さな問題がある場合は、このように宣言してみてください。

mref = FirebaseDatabase.getInstance().getReference(); 

私は、これは1がこれを含まない