【发布时间】:2018-10-14 04:59:53
【问题描述】:
我有课
public class Expense{
public String date;
public String item;
public int price;
public Expense(){}
public Expense(String date,String item,int price){
this.date = date;
this.item = item;
this.price = price;
}
public void setDate(String date) {
this.date = date;
}
public void setItem(String item){
this.item = item;
}
public void setPrice(int price) {
this.price = price;
}
public int getPrice() {
return price;
}
public String getDate() {
return date;
}
public String getItem() {
return item;
}
}
还有一个函数
public void createByDB(String[] data,int[] price ,int size,int[] pick){
//String []data looks like ={"apple","banana","candy"....}
//int []price looks like ={18,20,25,....}
//size = the size of int[] pick
//int[]pick looks like = {0,1,4,...} ,the numbers in this array is randomly pick,and the number won't excess the size of data and price
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("details");
Calendar c = Calendar.getInstance();
String date = c.get(Calendar.YEAR)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.DAY_OF_MONTH);
for(int i=0;i<size;i++) {
Expense expense = new Expense(date,data[pick[i]],price[pick[i]]);
myRef.push().setValue(expense);
}
}
我不知道为什么如果我调用 createByDB() 会使我的程序崩溃
我检查了我的 Logcat 并发现了错误消息
2018-10-14 12:21:13.832 2236-27737/com.google.android.googlequicksearchbox:搜索 E/AudioRecord-JNI:创建 AudioRecord 实例时出错:初始化 检查失败,状态为 -12。 2018-10-14 12:21:13.832 2236-27737/com.google.android.googlequicksearchbox:搜索 E/android.media.AudioRecord:初始化本机时错误代码-20 AudioRecord 对象。
我用谷歌搜索了它,帖子说我必须将 RECORD_AUDIO 权限添加到我的 AndroidManifest.xml 所以我将此行添加到我的清单中 this line
更新这是我的 AndroidManifest.xmlAndroidManifest.xml
但是当我调用 createdByDB() 时我的程序仍然崩溃
我不知道我哪里做错了。有人可以给我任何建议吗?谢谢!
更新: 如果我编辑
for(int i=0;i<size;i++) {
Expense expense = new Expense(date,data[pick[i]],price[pick[i]]);
myRef.push().setValue(expense);
}
到这里
Expense expense = new Expense(date,data[1],price[1]);
myRef.push().setValue(expense);
好用,我试过了
for(int i=0;i<size;i++)System.out.println("pick:"+pick[i]);
检查我是否超出了数据和价格的大小,但答案是否定的
那么,我怎样才能修改我的程序来做我想做的事呢?
【问题讨论】:
-
这些日志似乎是针对不同的应用程序的,并且您发布的代码不需要 RECORD_AUDIO 权限。可以从
logcat窗口的下拉菜单中选择“仅显示选定的应用程序”吗?它应该在右上角。 -
@TheGamer007 哦,我发现了我的错误,数据大小和价格都是 35,但我的选择数组中有时会包含数字“35”。所以超出了数组的大小。谢谢你。我解决了。