简体   繁体   English

如何在firebase数据库android中存储用户配置文件信息

[英]How to store user profile information in firebase database android

I am making an activity to store user'sinformation in firebase database.我正在做一个活动来将用户的信息存储在 firebase 数据库中。 this is the code which i have trued, but it is not storing any value in databse neither signout button is working...这是我已经验证的代码,但它没有在数据库中存储任何值,也没有退出按钮工作......

activity_profile.xml活动配置文件.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配置文件.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);
    }
}
}

Screen屏幕

个人资料屏幕

Can anyone tell me what I am doing wrong.谁能告诉我我做错了什么。 Thank you in advance提前谢谢你

once user model gets filled by the profile details (feilds)一旦用户模型被配置文件详细信息填充(字段)

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);

The above code generates parent node with user id and the user model gets saved as a value for that id(ie user id) , you may later fetch those profile details by calling userid as a key in the Firebase Database上面的代码使用用户 id 生成父节点,并且用户模型被保存为该 id(即用户 id)的值,稍后您可以通过调用 userid 作为 Firebase 数据库中的键来获取这些配置文件详细信息

Hope it helps :)希望它有帮助:)

Place all the values you want in a hashMap and save all of them together by using the setValue function.将您想要的所有值放在一个 hashMap 中,并使用 setValue 函数将它们保存在一起。

Also, if there is by chance a small problem with your mref, try declaring it like this.此外,如果您的 mref 偶然出现小问题,请尝试像这样声明它。

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

I hope this helps我希望这会有所帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Firebase Android中存储经过Google身份验证的用户个人资料图片? - How to store google authenticated user profile picture in firebase android? 如何使用Facebook SDK将Facebook用户个人资料信息存储在数据库中? - How do i store Facebook user profile information on a database using the Facebook sdk? 如何在 Android 上的 Firebase 数据库中存储用户 Uid? - How to store user Uid in our Firebase Database on Android? 在firebase android中保存配置文件信息 - saving profile information in firebase android 如何从 Firebase 在 android (kotlin) 中提供的照片 uri 中检索和存储用户个人资料图片? - How to retrieve and store user profile picture from photo uri provided by Firebase in android (kotlin)? 如何在登录 Android 时更新 Firebase 用户配置文件? - How to update Firebase user profile on sign in Android? 如何从Firebase数据库读取并将信息存储在列表视图中? Android的 - How can I read from a firebase database and store the information within a list view? Android android - 在数据库中存储信息 - android - store information in database 更新 Firebase Android 上的用户配置文件 - Update user profile on Firebase Android 如何从Firebase数据库读取用户信息并在Android App中显示为列表 - How to a read user Information from Firebase database and display as a List in Android App
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM