Android Cardview和RecyclerView连接到Firebase的片段中的NoSuchMethodError
我正在尝试创建一个连接到firebase的事件报告应用程序,每当我在应用程序中创建事件时,它都会以Cardview和RecyclerView的形式显示在firebase数据库中。我的应用程序已经可以在Firebase中显示输出,现在我正在尝试完成CardView和RecyclerView 但是,当我现在运行应用程序时,每当我尝试单击允许我输入事件的片段时,应用程序就会崩溃并显示此错误: java.lang.NoSuchMethodError:Lcom/google/firebase/FirebaseApp类中没有虚拟方法zzbox()Z;或其超类(声明'com.google.firebase.FirebaseApp'出现在/data/app/com.example.samuel.a4-CppiMKcbuMktQgH7RUO1XA==/split\u lib\u dependencies\u apk.apk中) 假定的错误是我的片段中的这一行:Android Cardview和RecyclerView连接到Firebase的片段中的NoSuchMethodError,android,firebase,android-fragments,firebase-realtime-database,Android,Firebase,Android Fragments,Firebase Realtime Database,我正在尝试创建一个连接到firebase的事件报告应用程序,每当我在应用程序中创建事件时,它都会以Cardview和RecyclerView的形式显示在firebase数据库中。我的应用程序已经可以在Firebase中显示输出,现在我正在尝试完成CardView和RecyclerView 但是,当我现在运行应用程序时,每当我尝试单击允许我输入事件的片段时,应用程序就会崩溃并显示此错误: java.lang.NoSuchMethodError:Lcom/google/firebase/Fireba
mDatabase = FirebaseDatabase.getInstance().getReference().child("Incidents");
请记住,这是一个片段,我看的教程是在一个普通的课堂上
这是我输入事件的片段
package com.example.samuel.a4;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.Toolbar;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import org.w3c.dom.Text;
public class IncmanFragment extends Fragment {
private RecyclerView mBlogList;
private DatabaseReference mDatabase;
FloatingActionButton fab;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
// return inflater.inflate(R.layout.fragment_incman, container,
false);
//i moved this up from just ontop of fab to here
View myView = inflater.inflate(R.layout.fragment_incman, container,
false);
// getFragmentManager().findFragmentById(R.id.fragment_container);
mDatabase =
FirebaseDatabase.getInstance().getReference().child("Incidents");
mDatabase.keepSynced(true);
mBlogList=(RecyclerView) myView.findViewById(R.id.recyclerview);
mBlogList.setHasFixedSize(true);
mBlogList.setLayoutManager(new LinearLayoutManager(getActivity()));
fab = (FloatingActionButton) myView.findViewById(R.id.fabIncident);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, new
ReportFragment());
fragmentTransaction.addToBackStack(null);
/* Toast.makeText(getActivity(), "toast successful",
Toast.LENGTH_SHORT).show();*/
fragmentTransaction.commit();
}
});
return myView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<IncmanFirebaseName, IncmanViewHolder>
firebaseRecyclerAdapter = new
FirebaseRecyclerAdapter<IncmanFirebaseName,
IncmanViewHolder>
(IncmanFirebaseName.class, R.layout.incidentdesign,
IncmanViewHolder.class, mDatabase) {
@Override
protected void populateViewHolder(IncmanViewHolder viewHolder,
viewHolder.setTitle(model.getTitle());
viewHolder.setDetails(model.getDetailsId());
viewHolder.setRemarks(model.getRemarksId());
viewHolder.setLocation(model.getLocationId());
viewHolder.setDate(model.getDate());
viewHolder.setUrgency(model.getUrgencyId());
}
};
mBlogList.setAdapter(firebaseRecyclerAdapter);
}
public static class IncmanViewHolder extends RecyclerView.ViewHolder
{
View mView;
public IncmanViewHolder(View itemView)
{
super(itemView);
mView = itemView;
}
public void setTitle(String title)
{
TextView tvtitledesign =
(TextView)mView.findViewById(R.id.tvtitledesign);
tvtitledesign.setText(title);
}
public void setDetails(String detailsId)
{
TextView tvdetailsdesign =
(TextView)mView.findViewById(R.id.tvdetailsdesign);
tvdetailsdesign.setText(detailsId);
}
public void setRemarks(String remarksId)
{
TextView tvremarksdesign =
(TextView)mView.findViewById(R.id.tvremarksdesign);
tvremarksdesign.setText(remarksId);
}
public void setLocation(String locationId)
{
TextView tvlocationdesign = (TextView)
mView.findViewById(R.id.tvlocationdesign);
tvlocationdesign.setText(locationId);
}
public void setDate (String date)
{
TextView tvdatedesign =
(TextView)mView.findViewById(R.id.tvdatedesign);
tvdatedesign.setText(date);
}
public void setUrgency(String urgencyId)
{
TextView tvurgencydesign =
(TextView)mView.findViewById(R.id.tvurgencydesign);
tvurgencydesign.setText(urgencyId);
}
}
}
现在我不知道为什么logcat会在我的代码中显示这一行作为错误,因为我在另一个片段中有一行类似的代码,它工作得非常好;下面是片段:“package com.example.samuel.a4
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
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.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import org.w3c.dom.Text;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;
import static android.app.Activity.RESULT_OK;
public class ReportFragment extends Fragment implements
AdapterView.OnItemSelectedListener{
private Button btnChoose,btnUpload;
private ImageView imageView;
private Uri filePath;
private final int PICK_IMAGE_REQUEST = 71;
private TextView mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
private EditText reportedBy;
private TextView date; //upstairs declare alr as mDisplayDate
private Spinner spinner; //downstairs declare alr as spinner3
private EditText location;
private Spinner spinner2; //downstairs declare alr as spinner2
private EditText details;
private Spinner spinner3; //downstairs declare alr as spinner1
private EditText remarks;
private EditText title;
private Button submitIncident;
DatabaseReference databaseIncidents;
FirebaseStorage storage;
StorageReference storageReference;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container,
false);
databaseIncidents =
FirebaseDatabase.getInstance().getReference("Incidents");
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
btnChoose = (Button) v.findViewById(R.id.btnChoose);
btnUpload = (Button) v.findViewById(R.id.btnUpload);
imageView = (ImageView) v.findViewById(R.id.imgView);
reportedBy = (EditText) v.findViewById(R.id.etreportedby);
// Below have already line 151
// date = (TextView) v.findViewById(R.id.tvdate);
location = (EditText) v.findViewById(R.id.etlocation);
details = (EditText) v.findViewById(R.id.etdetails);
remarks = (EditText) v.findViewById(R.id.etremarks);
title = (EditText) v.findViewById(R.id.ettitle);
submitIncident = (Button) v.findViewById(R.id.btnSubmit);
btnChoose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
}
});
submitIncident.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
incidentSubmit();
}
});
return v;
}
private void incidentSubmit(){
String reportedname = reportedBy.getText().toString().trim();
String location1 = location.getText().toString();
String details1 = details.getText().toString();
String remarks1 = remarks.getText().toString();
String urgency1 = spinner.getSelectedItem().toString();
String type1 = spinner2.getSelectedItem().toString();
String splocation1 = spinner3.getSelectedItem().toString();
String date1 = mDisplayDate.getText().toString();
String title1 = title.getText().toString();
if(!TextUtils.isEmpty(reportedname)) {
String incidentId = databaseIncidents.push().getKey();
Incident incident = new
Incident(reportedname,location1,details1,remarks1,urgency1,type1,splocation1,date1,title1);
databaseIncidents.child(incidentId).setValue(incident);
Toast.makeText(getActivity(), "Incident Added",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), "All fields must be
entered",Toast.LENGTH_LONG).show();
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
String text = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
导入android.app.DatePickerDialog;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.graphics.Color;
导入android.graphics.drawable.ColorDrawable;
导入android.media.Image;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.support.annotation.NonNull;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.text.TextUtils;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.DatePicker;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.OnFailureListener;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.storage.firebase存储;
导入com.google.firebase.storage.OnProgressListener;
导入com.google.firebase.storage.StorageReference;
导入com.google.firebase.storage.UploadTask;
导入org.w3c.dom.Text;
导入java.io.IOException;
导入java.util.Calendar;
导入java.util.Date;
导入java.util.UUID;
导入静态android.app.Activity.RESULT\u确定;
公共类ReportFragment扩展了片段实现
AdapterView.OnItemSelectedListener{
专用按钮BTNCOOSE,btnUpload;
私人影像视图;
私有Uri文件路径;
私有最终整数选择图像请求=71;
私有文本视图mDisplayDate;
私有DatePickerDialog.OnDateSetListener mDateSetListener;
私人编辑文本报告人;
私有文本视图日期;//将alr声明为mDisplayDate
私有微调器微调器;//将alr声明为微调器3
私密文本定位;
专用喷丝器喷丝器2;//将alr声明为喷丝器2
私人编辑文本详细信息;
专用喷丝器喷丝器3;//将alr声明为喷丝器1
私人评论;
私人编辑文本标题;
私人按钮提交事件;
数据库参考数据库事件;
火基储存;
StorageReference-StorageReference;
@可空
@凌驾
公共视图onCreateView(@NonNull layoutiner充气机,@Nullable
视图组容器,@Nullable Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_报告,容器,
假);
数据库事件=
FirebaseDatabase.getInstance().getReference(“事件”);
storage=FirebaseStorage.getInstance();
storageReference=storage.getReference();
btnChoose=(按钮)v.findviewbyd(R.id.btnChoose);
btnUpload=(按钮)v.findviewbyd(R.id.btnUpload);
imageView=(imageView)v.findViewById(R.id.imgView);
reportedBy=(EditText)v.findViewById(R.id.etreportedby);
//下面是第151行
//日期=(文本视图)v.findviewbyd(R.id.tvdate);
位置=(EditText)v.findViewById(R.id.etlocation);
详细信息=(EditText)v.findViewById(R.id.etdetails);
备注=(编辑文本)v.findviewbyd(R.id.etremarks);
标题=(编辑文本)v.findviewbyd(R.id.ettitle);
submitIncident=(按钮)v.findViewById(R.id.btnSubmit);
btnChoose.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
选择图像();
}
});
btnUpload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
上传图像();
}
});
submitIncident.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
附带提交();
}
});
返回v;
}
私人无效事故提交(){
String reportedname=reportedBy.getText().toString().trim();
String location1=location.getText().toString();
字符串details1=details.getText().toString();
String remark1=comments.getText().toString();
字符串1=spinne
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
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.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import org.w3c.dom.Text;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;
import static android.app.Activity.RESULT_OK;
public class ReportFragment extends Fragment implements
AdapterView.OnItemSelectedListener{
private Button btnChoose,btnUpload;
private ImageView imageView;
private Uri filePath;
private final int PICK_IMAGE_REQUEST = 71;
private TextView mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
private EditText reportedBy;
private TextView date; //upstairs declare alr as mDisplayDate
private Spinner spinner; //downstairs declare alr as spinner3
private EditText location;
private Spinner spinner2; //downstairs declare alr as spinner2
private EditText details;
private Spinner spinner3; //downstairs declare alr as spinner1
private EditText remarks;
private EditText title;
private Button submitIncident;
DatabaseReference databaseIncidents;
FirebaseStorage storage;
StorageReference storageReference;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container,
false);
databaseIncidents =
FirebaseDatabase.getInstance().getReference("Incidents");
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
btnChoose = (Button) v.findViewById(R.id.btnChoose);
btnUpload = (Button) v.findViewById(R.id.btnUpload);
imageView = (ImageView) v.findViewById(R.id.imgView);
reportedBy = (EditText) v.findViewById(R.id.etreportedby);
// Below have already line 151
// date = (TextView) v.findViewById(R.id.tvdate);
location = (EditText) v.findViewById(R.id.etlocation);
details = (EditText) v.findViewById(R.id.etdetails);
remarks = (EditText) v.findViewById(R.id.etremarks);
title = (EditText) v.findViewById(R.id.ettitle);
submitIncident = (Button) v.findViewById(R.id.btnSubmit);
btnChoose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
}
});
submitIncident.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
incidentSubmit();
}
});
return v;
}
private void incidentSubmit(){
String reportedname = reportedBy.getText().toString().trim();
String location1 = location.getText().toString();
String details1 = details.getText().toString();
String remarks1 = remarks.getText().toString();
String urgency1 = spinner.getSelectedItem().toString();
String type1 = spinner2.getSelectedItem().toString();
String splocation1 = spinner3.getSelectedItem().toString();
String date1 = mDisplayDate.getText().toString();
String title1 = title.getText().toString();
if(!TextUtils.isEmpty(reportedname)) {
String incidentId = databaseIncidents.push().getKey();
Incident incident = new
Incident(reportedname,location1,details1,remarks1,urgency1,type1,splocation1,date1,title1);
databaseIncidents.child(incidentId).setValue(incident);
Toast.makeText(getActivity(), "Incident Added",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), "All fields must be
entered",Toast.LENGTH_LONG).show();
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
String text = parent.getItemAtPosition(position).toString();
Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}