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);
}
}
}
画面
誰でも私が間違っていることを教えてもらえますか?ユーザモデルはプロファイルの詳細(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);
予め
を役に立てば幸い? onStateChangedメソッドでは? – Zen
まず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