[英]Error deleting a value firebase android
这是我第一个使用Firebase的Android项目,从Firebase加载后,我试图使用AlertDialog
删除选定的值,但是我的应用程序崩溃了。 而且我没有解决该错误的方法。
第104行是此String name = dataSnapshot.child("name").getValue().toString();
PlaceActivity .java
public class PlaceActivity extends AppCompatActivity {
private FloatingActionButton mAddPlaceFloatButton;
private DatabaseReference mUserPlaceDatabase, mPlaceDatabase;
private RecyclerView mUserPlaceList;
private Toolbar mToolbar;
private FirebaseUser mCurrentUser;
private String currentUid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place);
mAddPlaceFloatButton = (FloatingActionButton) findViewById(R.id.addplace_button);
mToolbar = (Toolbar) findViewById(R.id.add_app_bar);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("Maintain");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
currentUid = mCurrentUser.getUid();
mUserPlaceDatabase = FirebaseDatabase.getInstance().getReference().child("Owner").child(currentUid);
mPlaceDatabase = FirebaseDatabase.getInstance().getReference().child("Places");
mUserPlaceList = (RecyclerView) findViewById(R.id.user_place_list);
mUserPlaceList.setHasFixedSize(true);
mUserPlaceList.setLayoutManager(new LinearLayoutManager(this));
mAddPlaceFloatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent editIntent = new Intent(PlaceActivity.this, AddPlacesActivity.class);
startActivity(editIntent);
}
});
}
@Override
protected void onStart() {
super.onStart();
mUserPlaceDatabase = FirebaseDatabase.getInstance().getReference().child("Owner").child(currentUid);
FirebaseRecyclerAdapter<Owner, OwnerViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Owner, OwnerViewHolder>(
Owner.class,
R.layout.place_single_layout,
OwnerViewHolder.class,
mUserPlaceDatabase
) {
@Override
protected void populateViewHolder(final OwnerViewHolder viewHolder, Owner model, final int position) {
final String user_id = getRef(position).getKey();
mPlaceDatabase.child(user_id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue().toString();
String price = dataSnapshot.child("price").getValue().toString();
String image = dataSnapshot.child("thumb_image").getValue().toString();
viewHolder.setName(name);
viewHolder.setPrice(price);
viewHolder.setThumb_image(image, getApplicationContext());
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CharSequence option[] = new CharSequence[]{"Edit", "Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(PlaceActivity.this);
builder.setTitle("Select Options");
builder.setItems(option, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (i == 0){
Intent editIntent = new Intent(PlaceActivity.this, EditPlacesActivity.class);
editIntent.putExtra("user_id", user_id);
startActivity(editIntent);
}
if (i == 1){
Intent editIntent = new Intent(PlaceActivity.this, AccountFragment.class);
startActivity(editIntent);
}
}
});
builder.show();
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
mUserPlaceList.setAdapter(firebaseRecyclerAdapter);
}
public static class OwnerViewHolder extends RecyclerView.ViewHolder{
View mView;
public OwnerViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setName(String name){
TextView mPlaceName = (TextView) mView.findViewById(R.id.place_name);
mPlaceName.setText(name);
}
public void setPrice(String price) {
TextView mPlaceStatus = (TextView) mView.findViewById(R.id.place_price);
mPlaceStatus.setText(price);
}
public void setThumb_image(final String thumb_image, final Context ctx){
final ImageView mPlaceImage = (ImageView) mView.findViewById(R.id.place_image);
Picasso.with(ctx).load(thumb_image).networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.palceholder).into(mPlaceImage, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Picasso.with(ctx).load(thumb_image).placeholder(R.drawable.palceholder).into(mPlaceImage);
}
});
}
}
}
这是我的Firebase数据库结构Firebase数据库结构
日志:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.kadek.tripgo, PID: 15594
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.kadek.tripgo.PlaceActivity$2$1.onDataChange(PlaceActivity.java:104)
at com.google.android.gms.internal.to.zza(Unknown Source)
at com.google.android.gms.internal.vj.zzHX(Unknown Source)
at com.google.android.gms.internal.vp.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
if (dataSnapshot.exists()) { String name = dataSnapshot.child("name").getValue().toString(); String price = dataSnapshot.child("price").getValue().toString(); String image = dataSnapshot.child("thumb_image").getValue().toString(); viewHolder.setName(name); viewHolder.setPrice(price); viewHolder.setThumb_image(image, getApplicationContext()); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.