java - 无法在 child() 中为参数“pathString”传递 null - 从 Firebase 接收数据
问题描述
我的安卓应用有问题。我正在为我的学校项目制作一个简单的学习应用程序,我需要一个带有理论的字符串来处理我将创建的每个主题。为了做到这一点,我使用了数据库,我从中提取问题进行测试,并尝试使用类似的数据库参考来获取它们,但参数更少。
但是有一个问题,在 QuestionsActivity 上,负责取出特定类别名称的“类别”变量工作正常,但 SetsActivity 上的相同方案(我想将理论放入 TextView)返回“null”。
活动代码:
package com.example.klikzdaj;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.List;
public class SetsActivity extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
private GridView gridView;
private TextView tekst;
private String category;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sets);
tekst = (TextView) findViewById(R.id.tekst);
category = getIntent().getStringExtra("category");
myRef.child("SETS").child(category).child("theory").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String s = (String) dataSnapshot.getValue();
tekst.setText(" "+ s);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(getIntent().getStringExtra("title"));
gridView = findViewById(R.id.gridview);
GridAdapter adapter = new GridAdapter(getIntent().getIntExtra("sets",0),getIntent().getStringExtra("title"));
gridView.setAdapter(adapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId() == android.R.id.home){
finish();
}
return super.onOptionsItemSelected(item);
}
}
数据库:
{
"Class1" : {
"category1" : {
"name" : "adding",
"sets" : 5,
},
"url" : "https://firebasestorage.googleapis.com/v0/b/klikzdaj.appspot.com/o/Klasa1%2Fdodawnie.jpg?alt=media&token=b85e0b97-c1cb-401f-9201-b4303efc3313"
},
"category2" : {
"name" : "multiply",
"sets" : 3,
"url" : "https://firebasestorage.googleapis.com/v0/b/klikzdaj.appspot.com/o/Klasa1%2Fodejmowanie.jpg?alt=media&token=69b992ba-6efb-4da8-94fe-f0f27ff73474"
},
"category3" : {
"name" : "youtube",
"sets" : 15,
"url" : "https://firebasestorage.googleapis.com/v0/b/klikzdaj.appspot.com/o/Klasa1%2Fdodawnie.jpg?alt=media&token=b85e0b97-c1cb-401f-9201-b4303efc3313"
}
},
"class2" : {
"category1" : {
"name" : "divide",
"sets" : 3,
"url" : "https://firebasestorage.googleapis.com/v0/b/klikzdaj.appspot.com/o/Klasa1%2Fdodawnie.jpg?alt=media&token=b85e0b97-c1cb-401f-9201-b4303efc3313"
}
},
"SETS" : {
"adding" : {
"questions" : {
"wdbjhawb" : {
"correctANS" : "14",
"optionA" : "9",
"optionB" : "14",
"optionC" : "44",
"optionD" : "17",
"question" : "where is 14",
"setNo" : 1
}
}
},
"youtube" : {
"questions" : {
"adwwad" : {
"correctANS" : "17",
"optionA" : "15",
"optionB" : "10",
"optionC" : "18",
"optionD" : "17",
"question" : "where is 17",
"setNo" : 1
},
"sadafgwaf" : {
"correctANS" : "1",
"optionA" : "1",
"optionB" : "2",
"optionC" : "3",
"optionD" : "4",
"question" : "where is 1",
"setNo" : 1
}
},
"theory" : {
"text" : "ijawdoijawiodjaoiwdjiojdaiwdioajwd"
}
}
}
}
我希望它是可以理解的,请帮助:)
解决方案
推荐阅读
- r - 在闪亮的应用程序中基于一个动作按钮隐藏和显示绘图
- java - org.springframework.web.util.NestedServletException:请求处理失败;
- python - 将文本文件中的第一行与其他行进行比较以查看时间差异
- .net - using docker-compose.debug.yml from Visual studio for debugging purposes
- javascript - Materialize sidenav 可折叠在单独的 JS 文件中不起作用
- regex - 优化正则表达式“展开循环”模式
- python - Django 和多租户哪些应用程序必须共享,哪些应用程序必须是公共的
- android - Firebase 实时数据库 setValue() 不工作
- flutter - Flutter Bloc:返回自定义构造函数对象作为状态
- deep-learning - 为什么他们在更快的 RCNN 中参数化锚框的坐标?