简体   繁体   English

删除值Firebase Android时出错

[英]Error deleting a value firebase android

This is my first Android project with Firebase and I am trying to remove a selected value with AlertDialog after loaded from Firebase, but my app Crashed. 这是我第一个使用Firebase的Android项目,从Firebase加载后,我试图使用AlertDialog删除选定的值,但是我的应用程序崩溃了。 and I am not getting how do I solve this error. 而且我没有解决该错误的方法。

line 104 is this String name = dataSnapshot.child("name").getValue().toString(); 第104行是此String name = dataSnapshot.child("name").getValue().toString();

PlaceActivity .java 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);

                }
            });

        }


    }
}

This is my Firebase Database structure Firebase Database Structure 这是我的Firebase数据库结构Firebase数据库结构

LOG : 日志:

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)
  • First make sure that you have the childs ( name, price, thumb_image) in your mPlaceDatabase in Firebase console. 首先,请确保您在Firebase控制台的mPlaceDatabase中具有子级(名称,价格,thumb_image)。
  • If they are ok, try this in in onDataChange: 如果可以,请在onDataChange中尝试以下操作:
 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM