Firebase - Как вставить нового дочернего элемента в мой узел «Пользователи» по клику? - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь вставить новый дочерний элемент с именем «Applied Jobs» в мой узел Users в Firebase следующим образом:

enter image description here

Однако я хочу этот ребенок будет добавлен ПОСЛЕ нажатия кнопки на экране под названием «Запрос на найм». Я попробовал следующий код, глядя на другие подобные вопросы, но безрезультатно. Я был бы признателен, если бы кто-то помог мне с этим. Также отметим, что мне нужно, чтобы дочерний элемент был добавлен к текущему пользователю, вошедшему в систему.

Пока это мой код:

JobInfo. java

package com.example.oddsynew;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;

public class JobInfo extends AppCompatActivity {

    TextView jobName, jobCharge, jobLocation, jobDate, jobTime, jobDesc, jobTasks, addPref, recruiterName;
    ImageView profPic;
    String jobname, jobloc, jobcharge, profpic, startdate, enddate, starttime, endtime, jobdesc, jobtasks, addpref, recruitername, userID;
    ImageButton menuIcon;
    DrawerLayout drawer;
    Button requestForHireBtn;
    DatabaseReference myRef;
    FirebaseAuth mAuth;
    FirebaseUser u;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_job_info);

        drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        menuIcon = (ImageButton) findViewById(R.id.menuIcon);
        requestForHireBtn = (Button) findViewById(R.id.requestForHireBtn);

        menuIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                drawer.openDrawer(GravityCompat.START);
            }
        });

        jobName = (TextView) findViewById(R.id.jobName_info);
        jobCharge = (TextView) findViewById(R.id.jobCharge_info);
        jobLocation = (TextView) findViewById(R.id.jobLocation_info);
        profPic = (ImageView) findViewById(R.id.prof_pic_info);
        jobDate = (TextView) findViewById(R.id.jobDate_info);
        jobTime = (TextView) findViewById(R.id.jobTime_info);
        jobDesc = (TextView) findViewById(R.id.jobDesc);
        jobTasks = (TextView) findViewById(R.id.jobTasks);
        addPref = (TextView) findViewById(R.id.additionalPref);
        recruiterName = (TextView) findViewById(R.id.recruiterName_info);

        jobname = getIntent().getStringExtra("jobName");
        jobloc = getIntent().getStringExtra("jobLocation");
        jobcharge = getIntent().getStringExtra("jobCharge");
        profpic = getIntent().getStringExtra("profPic");
        startdate = getIntent().getStringExtra("startDate");
        enddate = getIntent().getStringExtra("endDate");
        starttime = getIntent().getStringExtra("startTime");
        endtime = getIntent().getStringExtra("endTime");
        jobdesc = getIntent().getStringExtra("jobDesc");
        jobtasks = getIntent().getStringExtra("jobTasks");
        addpref = getIntent().getStringExtra("addPref");
        recruitername = getIntent().getStringExtra("recruiterName");

        jobName.setText(jobname);
        jobCharge.setText(jobcharge);
        jobLocation.setText(jobloc);
        jobDate.setText(startdate + " - " + enddate);
        jobTime.setText(starttime + " - " + endtime);
        jobDesc.setText(jobdesc);
        jobTasks.setText(jobtasks);
        addPref.setText(addpref);
        recruiterName.setText(recruitername);

        Picasso.get().load(profpic).into(profPic);

        requestForHireBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                u = mAuth.getCurrentUser();
                userID = u.getUid();
                myRef = FirebaseDatabase.getInstance().getReference().child("Users").child("userID").child("Applied Jobs");
                myRef.child("job_name").setValue(jobname);

            }
        });

    }
}

Ответы [ 4 ]

2 голосов
/ 07 апреля 2020

Измените это:

myRef = FirebaseDatabase.getInstance().getReference().child("Users").child("userID").child("Applied Jobs");
myRef.child("job_name").setValue(jobname);

на это:

userID = u.getUid();
myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userID).child("Applied Jobs");
myRef.child("job_name").setValue(jobname);

Удалите кавычки вокруг userID, вам нужно передать значение. Не строковый формат userID

0 голосов
/ 07 апреля 2020

Используйте это:

   myRef = FirebaseDatabase.getInstance().getReference("Users").child(userID).child("Applied Jobs"); 
    myRef.child("job_name").setValue(jobname);
0 голосов
/ 07 апреля 2020

Мне удалось найти решение. Все, что мне нужно было сделать, это добавить "mAuth = FirebaseAuth.getInstance ();" и это сработало:

requestForHireBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mAuth = FirebaseAuth.getInstance(); //added this
                u = mAuth.getCurrentUser();
                userID = u.getUid();
                myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userID).child("Applied Jobs");
                myRef.child("job_name").setValue(jobname);

            }
        });
0 голосов
/ 07 апреля 2020
myRef = FirebaseDatabase.getInstance().getReference("oddsy-b8336").child("Users").child(userID).child("Applied Jobs"); 
myRef.child("job_name").setValue(jobname);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...