Java 当我单击添加时Android应用程序崩溃
我正在使用Firebase数据库和Android Studio。当我运行应用程序并单击添加食物按钮时,应用程序崩溃,数据库中没有添加任何内容。如果我没有输入食物名称,错误消息将按预期显示 这是我的密码:Java 当我单击添加时Android应用程序崩溃,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在使用Firebase数据库和Android Studio。当我运行应用程序并单击添加食物按钮时,应用程序崩溃,数据库中没有添加任何内容。如果我没有输入食物名称,错误消息将按预期显示 这是我的密码: public class addFood extends AppCompatActivity { //source : https://www.youtube.com/watch?v=EM2x33g4syY&t=415s EditText editTextName; EditText
public class addFood extends AppCompatActivity {
//source : https://www.youtube.com/watch?v=EM2x33g4syY&t=415s
EditText editTextName;
EditText editTextBestBefore;
Button buttonAddFood;
Spinner spinnerCategory;
DatabaseReference foodDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_food);
// source : https://www.youtube.com/watch?v=EM2x33g4syY&t=415s
foodDatabase = FirebaseDatabase.getInstance().getReference("food");
editTextName =(EditText)(findViewById(R.id.editTextName));
editTextBestBefore =(EditText)(findViewById(R.id.editTextBestBefore));
buttonAddFood =(Button) (findViewById(R.id.buttonAddFood));
spinnerCategory =(Spinner) (findViewById(R.id.spinnerCategory));
buttonAddFood.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addFood();
}
});
}
private void addFood()
//source : https://www.youtube.com/watch?v=EM2x33g4syY&t=415s
{
String foodName = editTextName.getText().toString().trim();
String bestBefore = editTextBestBefore.getText().toString().trim();
String category = spinnerCategory.getSelectedItem().toString();
if (!TextUtils.isEmpty(foodName)){
String id = foodDatabase.push().getKey();
food food = new food(id,foodName, bestBefore, category);
foodDatabase.child(id).setValue(food);
Toast.makeText(this, "food added!", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(this, "Please enter a food name", Toast.LENGTH_LONG).show();
}
}
}
日志:
01-16 15:28:57.972 27506-27506/com.virtual.A2018冰箱I/FA:应用程序测量正在启动,版本:11020
01-16 15:28:57.973 27506-27506/com.virtual.a2018冰箱I/FA:启用调试日志运行:adb shell setprop log.tag.FA VERBOSE
01-16 15:28:58.032 27506-27506/com.virtual.A2018冰箱V/FA:已启用收集
01-16 15:28:58.033 27506-27506/com.virtual.a2018冰箱V/FA:App-package,谷歌App-id:com.virtual.a2018冰箱,1:203952876063:android:ae6871bb1651394b
01-16 15:28:58.035 27506-27506/com.virtual.A2018冰箱I/FA:要启用更快的调试模式事件日志记录运行:
adb shell setprop debug.firebase.analytics.app com.virtual.A2018冰箱
01-16 15:28:58.035 27506-27506/com.virtual.A2018冰箱D/FA:调试级别消息日志记录已启用
01-16 15:28:58.145 27506-27506/com.virtual.a2018冰箱V/FA:注册的活动生命周期回调
01-16 15:28:58.27227506-27625/com.virtual.a2018冰箱V/FA:使用测量服务
01-16 15:28:58.287 27506-27625/com.virtual.A2018冰箱V/FA:连接到远程服务
01-16 15:28:58.348 27506-27625/com.virtual.a2018冰箱V/FA:使用测量服务
01-16 15:28:58.348 27506-27625/com.virtual.a2018冰箱V/FA:连接尝试已在进行中
01-16 15:28:59.474 27506-27506/com.virtual.a2018冰箱V/FA:on活动已创建
01-16 15:29:01.984 27506-27625/com.virtual.A2018冰箱V/FA:使用测量服务
01-16 15:29:01.984 27506-27625/com.virtual.a2018冰箱V/FA:连接尝试已在进行中
01-16 15:29:01.989 27506-27625/com.virtual.a2018冰箱V/FA:活动恢复,时间:329370286
01-16 15:29:01.993 27506-27625/com.virtual.A2018冰箱I/FA:找不到标签管理器,因此将不使用
01-16 15:29:02.001 27506-27625/com.virtual.a2018冰箱D/FA:记录事件(FE):屏幕视图(vs),捆绑[{firebase\u事件来源(\u o)=自动,firebase\u屏幕类(\u sc)=添加食物,firebase\u屏幕id(\u si)=3652847265616890340}]
01-16 15:29:02.030 27506-27625/com.virtual.A2018冰箱V/FA:使用测量服务
01-16 15:29:02.030 27506-27625/com.virtual.a2018冰箱V/FA:连接尝试已在进行中
01-16 15:29:03.231 27506-27625/com.virtual.a2018冰箱D/FA:已连接到远程服务
01-16 15:29:03.232 27506-27625/com.virtual.A2018冰箱V/FA:处理排队服务任务:4
01-16 15:29:03.981 17286-27703/? V/FA-SVC:日志事件:origin=auto,name=screen\u view(\u-vs),params=Bundle[{firebase\u事件\u origin(\u-o)=auto,firebase\u screen\u class(\u-sc)=addFood,firebase\u screen\u-id(\u-si)=3652847265616890340}]
01-16 15:29:04.047 17286-27703/? V/FA-SVC:保存事件、名称、数据大小:屏幕视图(_-vs),52
01-16 15:29:04.057 17286-27703/? V/FA-SVC:Event recorded:Event{appId='com.virtual.a2018fridge',name='screen'u view('u-vs'),params=Bundle[{firebase\u Event\u origin('u-o)=auto,firebase\u screen\u class('u-sc)=addFood,firebase\u screen\u-id('u-si)=3652847265616890340}
01-16 15:29:04.063 17286-27703/? V/FA-SVC:计划在大约毫秒内上载:978689
01-16 15:29:04.097 17286-27703/? V/FA-SVC:使用GcmTaskService计划上载
01-16 15:29:04.098 17286-27703/? V/FA-SVC:使用Gcm调度任务。时间978689
01-16 15:29:04.106 17286-27703/? V/FA-SVC:后台事件处理时间,毫秒:133
01-16 15:29:07.348 27772-27772/? I/FA:应用程序测量正在启动,版本:11020
01-16 15:29:07.349 27772-27772/? I/FA:要启用调试日志记录,请运行:adb shell setprop log.tag.FA VERBOSE
01-16 15:29:07.370 27772-27772/? V/FA:已启用收集
01-16 15:29:07.371 27772-27772/? V/FA:App-package,谷歌App-id:com.whatsapp,1:293955441834:android:7373a2d0bdfa3228
01-16 15:29:07.372 27772-27772/? I/FA:要启用更快的调试模式事件日志记录运行:
adb shell setprop debug.firebase.analytics.app com.whatsapp
01-16 15:29:07.372 27772-27772/? D/FA:已启用调试级别消息日志记录
01-16 15:29:07.388 27772-27772/? V/FA:已注册的活动生命周期回调
01-16 15:29:07.415 27772-27818/? V/FA:使用测量服务
01-16 15:29:07.419 27772-27818/? V/FA:连接到远程服务
01-16 15:29:07.439 27772-27818/? V/FA:使用测量服务
01-16 15:29:07.439 27772-27818/? V/FA:连接尝试已在进行中
01-16 15:29:08.026 27772-27818/? D/FA:连接到远程服务
01-16 15:29:08.026 27772-27818/? V/FA:正在处理排队服务任务:2
01-16 15:29:09.150 27506-27625/com.virtual.a2018冰箱V/FA:不活动,断开与服务的连接
[ 01-16 15:29:09.339 27506:27506 W/ ]
Unable to open '/system/framework/prcui-config.jar': No such file or directory
01-16 15:29:11.535 17286-27791/?D/FA-SVC:get package replaced intent:com.virtual.a2018fridge您没有添加用于构建数据库的代码 比如像这样的事情
mRootRef.child("Chat").child(mCurrentUserId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.hasChild(mChatUser)){
Map chatAddMap = new HashMap();
chatAddMap.put("seen", false);
chatAddMap.put("timestamp", ServerValue.TIMESTAMP);
Map chatUserMap = new HashMap();
chatUserMap.put("Chat/" + mCurrentUserId + "/" + mChatUser, chatAddMap);
chatUserMap.put("Chat/" + mChatUser + "/" + mCurrentUserId, chatAddMap);
mRootRef.updateChildren(chatUserMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if(databaseError != null){
Log.d("CHAT_LOG", databaseError.getMessage().toString());
}
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mChatSendBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendMessage();
}
});
}
您必须根据您的要求构建数据库的位置请共享日志张贴堆栈跟踪。错误是什么?您看到日志了吗?这几乎是不可读的。尝试将其重新格式化一点在代码按钮addFood.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){addFood();}}}之前添加此项并根据您的要求更改其值