使用addValueEventListener()时Firebase数据库权限被拒绝错误

时间:2018-06-01 08:26:51

标签: android firebase firebase-realtime-database

我正在使用Firebase获取数据并将其加载到片段中。该片段包含一个列表,我想使用适配器添加日期。适配器接受3个arraylists作为输入以创建自定义列表。

以下是public class AttendanceFragment extends Fragment { private DatabaseReference reference, attendance, classid, divisionid, studentid, dates; private Button attbutton; private ListView list; private View mainview; private Activity activity; private ArrayList<String> date = new ArrayList<String>(), state = new ArrayList<String>(), teacher = new ArrayList<String>(); private ListAdapter listAdapter; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_attendence,container,false); } @Override public void onStart(){ super.onStart(); mainview = this.getView(); activity = this.getActivity(); attbutton = mainview.findViewById(R.id.att_per); list = mainview.findViewById(R.id.att_main_list); reference = FirebaseDatabase.getInstance().getReference(); attendance = reference.child(KeyStrings.attendance); classid = attendance.child(KeyStrings.class1); divisionid = classid.child(KeyStrings.division1); studentid = divisionid.child(KeyStrings.student1); dates = studentid.child("2018-07-06"); attbutton.setText(dates.getKey()); studentid.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { Toast.makeText(activity, "Does it work?", Toast.LENGTH_LONG).show(); for(DataSnapshot d1: dataSnapshot.getChildren()){ date.add(d1.getKey()); state.add(d1.child(KeyStrings.att_status).getValue().toString()); teacher.add(d1.child(KeyStrings.att_created_by).getValue().toString()); } listAdapter = new AttendanceAdapter(activity, date, state, teacher); list.setAdapter(listAdapter); } @Override public void onCancelled(DatabaseError databaseError) { } }); } }

addValueEventListener

代码设法使用存储在Firebase中的“日期”键中的文本设置按钮。因此,表明没有连接或权限问题。但是addValueEventListener的代码没有效果。

它出现以下错误:

  

收听/出勤/ 1 / A / 1失败:DatabaseError:Permission denied

这仅适用于AttendanceAdapter,并且没有任何内容添加到arraylists。事件实际上甚至没有被触发,因为没有显示toast消息。

以下是public class AttendanceAdapter extends ArrayAdapter<String>{ private ArrayList<String> date; private ArrayList<String> state; private ArrayList<String> teacher; private Activity context; public AttendanceAdapter(Activity context, ArrayList<String>date, ArrayList<String>state, ArrayList<String>teacher) { super(context, R.layout.fragment_attendence, date); this.date=date; this.state=state; this.teacher=teacher; } @Override public View getView(int position, View convertView, ViewGroup parent){ LayoutInflater inflater = context.getLayoutInflater(); View listviewItem = inflater.inflate(R.layout.fragment_attendence,null,true); TextView dateview=(TextView)listviewItem.findViewById(R.id.att_list_date); TextView stateview=(TextView)listviewItem.findViewById(R.id.att_list_stat); TextView teacherview=(TextView)listviewItem.findViewById(R.id.att_list_teacher); dateview.setText(date.get(position)); stateview.setText(state.get(position)); teacherview.setText(teacher.get(position)); return listviewItem; } } 的代码:

TextInputLayout

编辑1

正如我之前所说,Firebase可能没有许可或身份验证问题。但这是规则:

{   “规则”:{     “.read”:是的,     “.write”:是的   } }

0 个答案:

没有答案