当前位置: 首页 > 知识库问答 >
问题:

Firebase-如何在单击时将新的子节点插入到我的用户节点中?

易宣
2023-03-14

我正在尝试将一个名为“应用作业”的新子项插入Firebase中的“用户”节点,如下所示:

然而,我希望这个孩子被添加后,点击屏幕上的一个按钮,称为“招聘申请”。通过查看其他类似问题,我尝试了以下代码,但没有效果。如果有人帮我,我会很感激的。还要注意的是,我需要将子项添加到当前登录的用户。

这是我目前的代码:

工作信息。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);

            }
        });

    }
}

共有3个答案

韩博简
2023-03-14

我设法找到了解决办法。我所要做的就是添加“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);

            }
        });
范楚
2023-03-14
myRef = FirebaseDatabase.getInstance().getReference("oddsy-b8336").child("Users").child(userID).child("Applied Jobs"); 
myRef.child("job_name").setValue(jobname);
汪典
2023-03-14

改变这个:

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周围的引号,您必须传递值。不是用户ID的字符串格式

 类似资料:
  • 当我使用将新节点插入到二叉树中时,它只在子节点的位置插入新节点,即使根节点已经有左、右子节点。它不是访问子节点来创建更深层次的二叉树。 抱歉英语不好。

  • 问题内容: 我正在一个项目中,用户对我们的代客服务的请求在另一端代客接受请求。 我正在使用Firebase作为后端,并应要求将客户uid保存在“ request”子项上。 当代客接受请求时,客户uid应从“请求”节点移至“进行中”节点。 我怎样才能做到这一点? 问题答案: 我建议使用这个: 这来自以下来源:https : //gist.github.com/katowulf/6099042。我在J

  • 我有一个非常简单的节点结构,用于实现迭代深化DFS。然而,我后来在将子节点链接到父节点时遇到了麻烦。 后来在我的代码中,当我试图做这样的事情时,我会遇到严重的错误: 我只想将这个子节点(称为Down_节点)链接到它的父节点(称为Next)。但如果Next本身不是一个节点,我该怎么做呢? 正是指向下一步的指针带来了麻烦。我试过了 编辑:当我尝试使用 在/usr/lib/gcc/x86_64-redh

  • 我的Firebase数据库映像在Firebase的实时数据库中,我正在尝试访问父节点的名称,并给出了子节点的名称。但是,.parent似乎需要对子节点的引用,如果没有父节点的名称,我似乎无法获得子节点的引用。 这是我的数据的代码: 问题出在like函数中:如果我能找到一种方法来获取发tweet(参数t表示的tweet)的人的userId,那么第一个var y和所有这些都是不必要的。 如果我可以得到

  • 我想用XSLT转换XML文档。按名称和属性匹配的节点及其子节点应嵌套/移动到新节点中。 从转变 到 但是我的XSLT工作不好。您有什么提示吗,XSLT文件有什么问题? 非常感谢你 安德烈亚斯 我的XSLT 输出: 我的源XML文件 我希望在转换后的输出中将v:data节点及其子节点嵌套到一个新节点中。但只有属性名为“Custon”的v:data节点。转换后的XML文档应该如下所示 如果我从XSLT

  • 问题内容: 我创建了一个新的JsonNode 与此节点一起,然后如何在其中添加键值对,以便可以使用新值构造此新节点?我在http://www.cowtowncoder.com/blog/archives/2011/08/entry_460.html中阅读的内容涉及使用 但是,查看Jackson的JsonNode(v1.8)的API并没有显示任何此类方法。 问题答案: 这些方法在:除法中,大多数读取