问题描述
我正在使用Firebase进行项目,我希望在其中存储有关工作的基本信息。我创建了作业对象,并按照我认为是将其存储到数据库中的正确步骤进行操作,但是我不断收到错误消息(特别是最后一行):
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 4
I/AssistStructure: Flattened final assist data: 4736 bytes,containing 1 windows,25 views
V/FA: Inactivity,disconnecting from the service
D/CompatibilityChangeReporter: Compat change id reported: 147798919; UID 10151; state: disABLED
W/RepoOperation: setValue at /Job/-MEVMjcPp1ryvkEUQ4Fx Failed: DatabaseError: Permission denied
我试图写入数据库的Java文件(AddFragment.java):
package com.example.android.portfolio;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.android.portfolio.helpers.Job;
import com.example.android.portfolio.helpers.Validation;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class AddFragment extends Fragment {
//Database Reference
DatabaseReference ref;
//Create validation object
Validation validation = new Validation();
//Create Job object to pass into database
Job job;
//Component object creation
EditText editTextCompanyName;
EditText editTextJobName;
EditText editTextWebsite;
EditText editTextContactName;
EditText editTextContactEmail;
EditText editTextApplicationLink;
Spinner dropdown;
Button buttonAdd;
String[] items = new String[]{"One Week","Two Weeks","One Month","Never"};
String companyName,jobName,website,contactName,contactEmail,applicationLink;
int dropdownChoice;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add,container,false);
editTextCompanyName = (EditText) view.findViewById(R.id.editTextCompanyName);
editTextJobName = (EditText) view.findViewById(R.id.editTextJobName);
editTextWebsite = (EditText) view.findViewById(R.id.editTextWebsite);
editTextContactName = (EditText) view.findViewById(R.id.editTextContactName);
editTextContactEmail = (EditText) view.findViewById(R.id.editTextContactEmail);
editTextApplicationLink = (EditText) view.findViewById(R.id.editTextApplicationLink);
dropdown = (Spinner) view.findViewById(R.id.spinnerRemind);
buttonAdd = (Button) view.findViewById(R.id.buttonAdd);
//Create the spinner and set values to it using the above array. Warnings here are for possible null values
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(),android.R.layout.simple_spinner_dropdown_item,items);
dropdown.setAdapter(adapter);
ref = FirebaseDatabase.getInstance().getReference().child("Job");
buttonAdd.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Get data from GUI objects and put it into variables
companyName = editTextCompanyName.getText().toString().trim();
jobName = editTextJobName.getText().toString().trim();
website = editTextWebsite.getText().toString().trim();
contactName = editTextContactName.getText().toString().trim();
contactEmail = editTextContactEmail.getText().toString().trim();
applicationLink = editTextApplicationLink.getText().toString().trim();
dropdownChoice = dropdown.getSelectedItemPosition();
//Job object initialization
job = new Job(companyName,applicationLink,dropdownChoice);
//Push values to database
ref.push().setValue(job);
Toast.makeText(AddFragment.this.getActivity(),"Data inserted to database",Toast.LENGTH_LONG);
}
});
return view;
}
}
到目前为止,我已经尝试过:
这是我第一次使用Firebase,因此我试图了解使用Nosql数据库的情况,但是由于我的规则文件,我不明白我缺少连接过程的哪一部分,因此不应拒绝任何访问以进行写入
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)