У меня есть пользовательский узел с такой информацией, как имя, возраст и т. Д. c. У меня также есть узел вакансии с информацией о вакансии, опубликованной пользователем. Я хочу получить имя и местоположение пользователя и добавить его в узел задания. Я посмотрел похожие вопросы, и я попробовал это, но мое приложение падает, и я не уверен, почему.
Это мой Job
узел. Я прошу прощения за случайные записи.
![enter image description here](https://i.stack.imgur.com/u1p37.png)
Это мой Users
узел. Я хочу указать название города и имя текущего пользователя в узле вакансий.
![enter image description here](https://i.stack.imgur.com/Q85ho.png)
Вот так выглядит мой код:
package com.example.oddsynew;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class PostAds2 extends AppCompatActivity {
Button submitBtnPost;
EditText startdate, starttime, enddate, endtime, addpref;
String gigTitle, gigComp, gigDesc, gigTasks, gigStartDate, gigStartTime, gigEndDate, gigEndTime, addPref, userID, fName;
DatabaseReference myRef;
FirebaseUser u;
FirebaseAuth mAuth;
Job job;
Users user;
int i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_ads2);
myRef = FirebaseDatabase.getInstance().getReference().child("Jobs");
startdate = (EditText) findViewById(R.id.startDate_post);
enddate = (EditText) findViewById(R.id.endDate_post);
starttime = (EditText) findViewById(R.id.startTime_post);
endtime = (EditText) findViewById(R.id.endTime_post);
addpref = (EditText) findViewById(R.id.additionalPref_post);
submitBtnPost = (Button) findViewById(R.id.submitBtn_post);
mAuth = FirebaseAuth.getInstance();
u = mAuth.getCurrentUser();
userID = u.getUid();
job = new Job();
submitBtnPost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gigTitle = getIntent().getStringExtra("gigTitle");
gigComp = getIntent().getStringExtra("gigComp");
gigDesc = getIntent().getStringExtra("gigDesc");
gigTasks = getIntent().getStringExtra("gigTasks");
fName = user.getFname();
gigStartDate = startdate.getText().toString().trim();
gigEndDate = enddate.getText().toString().trim();
gigStartTime = starttime.getText().toString().trim();
gigEndTime = endtime.getText().toString().trim();
addPref = addpref.getText().toString().trim();
i = 004; i++;
job.setJobID(Integer.toString(i));
job.setJob_name(gigTitle);
job.setJob_charge(gigComp);
job.setJob_desc(gigDesc);
job.setJob_tasks(gigTasks);
job.setStart_date(gigStartDate);
job.setEnd_date(gigEndDate);
job.setStart_time(gigStartTime);
job.setEnd_time(gigEndTime);
job.setAdd_pref(addPref);
job.setLocation(user.getCity());
if(u != null){ //This is where I'm trying to add city and name value. Is this right?
job.setRecruiter_name(user.getFname() + " " + user.getLname());
job.setLocation(user.getCity());
}
//Check is fields are empty
if (gigStartDate.matches("") || gigEndDate.matches("") || gigStartTime.matches("") || gigEndTime.matches("") || addPref.matches("")) {
Toast.makeText(PostAds2.this, "Please fill all fields", Toast.LENGTH_LONG).show();
} else if (gigStartDate.matches("") && gigEndDate.matches("") && gigStartTime.matches("") && gigEndTime.matches("") && addPref.matches("")) {
Toast.makeText(PostAds2.this, "Please fill all fields", Toast.LENGTH_LONG).show();
}else{
myRef.push().setValue(job);
Toast.makeText(PostAds2.this, "Data Inserted", Toast.LENGTH_LONG).show();
}
}
});
}
}
Это все, что я получаю в своем отчете об ошибке:
04-13 14:12:03.977 11009-11009/com.example.oddsynew E/HAL: load: id=gralloc != hmi->id=gralloc
04-13 14:12:04.075 11009-11037/com.example.oddsynew E/HAL: load: id=gralloc != hmi->id=gralloc
04-13 14:12:04.080 11009-11037/com.example.oddsynew E/HAL: load: id=gralloc != hmi->id=gralloc
ОБНОВЛЕНИЕ: Я изменил свой код, чтобы включить карты ha sh, но он все еще не получает добавлено. Я использую функцию карт, верно?
package com.example.oddsynew;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
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 java.text.DateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class PostAds2 extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
Button submitBtnPost, chooseDateBtn, chooseDateBtn2;
EditText starttime, enddate, endtime, addpref;
TextView startdate;
String gigTitle, gigComp, gigDesc, gigTasks, gigStartDate, gigStartTime, gigEndDate, gigEndTime, addPref, userID, fName, startDateString, endDateString, recruiterName, recruiterCity;
DatabaseReference myRef;
FirebaseUser u;
FirebaseAuth mAuth;
Job job;
Users user;
int i, DATE_DIALOG = 0;
Map<String, Object> updates;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_ads2);
myRef = FirebaseDatabase.getInstance().getReference().child("Jobs");
updates = new HashMap<String,Object>();
startdate = (TextView) findViewById(R.id.startDate_post);
enddate = (EditText) findViewById(R.id.endDate_post);
starttime = (EditText) findViewById(R.id.startTime_post);
endtime = (EditText) findViewById(R.id.endTime_post);
addpref = (EditText) findViewById(R.id.additionalPref_post);
submitBtnPost = (Button) findViewById(R.id.submitBtn_post);
chooseDateBtn = (Button) findViewById(R.id.chooseDateBtn);
chooseDateBtn2 = (Button) findViewById(R.id.chooseDateBtn2);
mAuth = FirebaseAuth.getInstance();
u = mAuth.getCurrentUser();
userID = u.getUid();
job = new Job();
chooseDateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DATE_DIALOG = 1;
openDialog();
}
});
chooseDateBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DATE_DIALOG = 2;
openDialog();
}
});
submitBtnPost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gigTitle = getIntent().getStringExtra("gigTitle");
gigComp = getIntent().getStringExtra("gigComp");
gigDesc = getIntent().getStringExtra("gigDesc");
gigTasks = getIntent().getStringExtra("gigTasks");
recruiterName = user.getFname() + user.getLname();
recruiterCity = user.getCity();
gigStartDate = startdate.getText().toString().trim();
gigEndDate = enddate.getText().toString().trim();
gigStartTime = starttime.getText().toString().trim();
gigEndTime = endtime.getText().toString().trim();
addPref = addpref.getText().toString().trim();
i = 004;
i++;
job.setJobID(Integer.toString(i));
job.setJob_name(gigTitle);
job.setJob_charge(gigComp);
job.setJob_desc(gigDesc);
job.setJob_tasks(gigTasks);
job.setStart_date(gigStartDate);
job.setEnd_date(gigEndDate);
job.setStart_time(gigStartTime);
job.setEnd_time(gigEndTime);
job.setAdd_pref(addPref);
job.setLocation(user.getCity());
updates.put("recruiterName", recruiterName);
updates.put("city", recruiterCity);
myRef.updateChildren(updates);
/*if(u != null){
job.setRecruiter_name(user.getFname() + " " + user.getLname());
job.setLocation(user.getCity());
}*/
//Check is fields are empty
if (gigStartDate.matches("") || gigEndDate.matches("") || gigStartTime.matches("") || gigEndTime.matches("") || addPref.matches("")) {
Toast.makeText(PostAds2.this, "Please fill all fields", Toast.LENGTH_LONG).show();
} else if (gigStartDate.matches("") && gigEndDate.matches("") && gigStartTime.matches("") && gigEndTime.matches("") && addPref.matches("")) {
Toast.makeText(PostAds2.this, "Please fill all fields", Toast.LENGTH_LONG).show();
} else {
myRef.push().setValue(job);
Toast.makeText(PostAds2.this, "Data Inserted", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public void onDateSet(android.widget.DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
if(DATE_DIALOG == 1){
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
startDateString = DateFormat.getDateInstance(DateFormat.MONTH_FIELD).format(c.getTime());
startdate.setText(startDateString);
}
else if(DATE_DIALOG == 2){
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
endDateString = DateFormat.getDateInstance(DateFormat.MONTH_FIELD).format(c.getTime());
enddate.setText(endDateString);
}
}
public void openDialog() {
DialogFragment datePicker = new DatePicker();
datePicker.show(getSupportFragmentManager(), "date picker");
}
}
Работа. java
package com.example.oddsynew;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class Job {
String job_name, recruiter_name, location, job_charge, add_pref, start_date, end_date, start_time, end_time, job_desc, prof_pic, job_tasks, jobID;
public Job() {
}
public Job(String job_name, String recruiter_name, String location, String job_charge, String add_pref, String start_date,
String end_date, String start_time, String end_time, String job_desc, String prof_pic, String job_tasks, String jobID) {
this.job_name = job_name;
this.recruiter_name = recruiter_name;
this.location = location;
this.job_charge = job_charge;
this.add_pref = add_pref;
this.start_date = start_date;
this.end_date = end_date;
this.start_time = start_time;
this.end_time = end_time;
this.job_desc = job_desc;
this.prof_pic = prof_pic;
this.job_tasks = job_tasks;
this.jobID = jobID;
}
public String getJobID() {
return jobID;
}
public void setJobID(String jobID) {
this.jobID = jobID;
}
public Job(String prof_pic) {
this.prof_pic = prof_pic;
}
public String getJob_name() {
return job_name;
}
public void setJob_name(String job_name) {
this.job_name = job_name;
}
public String getRecruiter_name() {
return recruiter_name;
}
public void setRecruiter_name(String recruiter_name) {
this.recruiter_name = recruiter_name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getJob_charge() {
return job_charge;
}
public void setJob_charge(String job_charge) {
this.job_charge = job_charge;
}
public String getProf_pic() {
return prof_pic;
}
public void setProf_pic(String prof_pic) {
this.prof_pic = prof_pic;
}
public String getAdd_pref() {
return add_pref;
}
public void setAdd_pref(String add_pref) {
this.add_pref = add_pref;
}
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public String getEnd_time() {
return end_time;
}
public String getStart_date() {
return start_date;
}
public void setStart_date(String start_date) {
this.start_date = start_date;
}
public String getEnd_date() {
return end_date;
}
public void setEnd_date(String end_date) {
this.end_date = end_date;
}
public void setEnd_time(String end_time) {
this.end_time = end_time;
}
public String getJob_desc() {
return job_desc;
}
public void setJob_desc(String job_desc) {
this.job_desc = job_desc;
}
public String getJob_tasks() {
return job_tasks;
}
public void setJob_tasks(String job_tasks) {
this.job_tasks = job_tasks;
}
public static class Home2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_home, container, false);
}
}
}
Пользователи. java
package com.example.oddsynew;
public class Users {
String fname, lname, email, pass, state, city, age, job_name, recruiter_name, job_location, job_charge,
profile_pic, add_pref, start_date, end_date, start_time, end_time, job_desc, job_tasks, jobID;
public Users() {
}
public String getJobID() {
return jobID;
}
public void setJobID(String jobID) {
this.jobID = jobID;
}
public String getAdd_pref() {
return add_pref;
}
public void setAdd_pref(String add_pref) {
this.add_pref = add_pref;
}
public String getStart_date() {
return start_date;
}
public void setStart_date(String start_date) {
this.start_date = start_date;
}
public String getEnd_date() {
return end_date;
}
public void setEnd_date(String end_date) {
this.end_date = end_date;
}
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public String getEnd_time() {
return end_time;
}
public void setEnd_time(String end_time) {
this.end_time = end_time;
}
public String getJob_desc() {
return job_desc;
}
public void setJob_desc(String job_desc) {
this.job_desc = job_desc;
}
public String getJob_tasks() {
return job_tasks;
}
public void setJob_tasks(String job_tasks) {
this.job_tasks = job_tasks;
}
public String getProfile_pic() {
return profile_pic;
}
public void setProfile_pic(String profile_pic) {
this.profile_pic = profile_pic;
}
public String getRecruiter_name() {
return recruiter_name;
}
public void setRecruiter_name(String recruiter_name) {
this.recruiter_name = recruiter_name;
}
public String getJob_location() {
return job_location;
}
public void setJob_location(String job_location) {
this.job_location = job_location;
}
public String getJob_charge() {
return job_charge;
}
public void setJob_charge(String job_charge) {
this.job_charge = job_charge;
}
public String getFname() {
return fname;
}
public String getLname() {
return lname;
}
public String getEmail() {
return email;
}
public String getPass() {
return pass;
}
public void setFname(String fname) {
this.fname = fname;
}
public void setLname(String lname) {
this.lname = lname;
}
public void setEmail(String email) {
this.email = email;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getJob_name() {
return job_name;
}
public void setJob_name(String job_name) {
this.job_name = job_name;
}
}