对话框警报单击时应用程序崩溃

时间:2019-07-04 10:06:24

标签: android alertdialog charsequence

我在片段中创建了一个警报对话框。它显示了当用户单击项目视图时,以及当用户单击警报对话框选项时,它使应用程序崩溃。 仅当对Firebase执行操作但操作成功完成时,才会出现问题。我测试了它做烤面包,并打开其他活动,它工作正常。我如何删除那个?

userDbRef.child(userID).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            final String user_name = dataSnapshot.child("user_name").getValue().toString();
                            String pic = dataSnapshot.child("user_image").getValue().toString();
                            String user_status = dataSnapshot.child("user_status").getValue().toString();

                            holder.name.setText(user_name);
                            holder.status.setText(user_status);
                            Picasso.get().load(pic).networkPolicy(NetworkPolicy.OFFLINE)
                                    .placeholder(R.drawable.default_profile_image)
                                    .into(holder.imageView);

                            holder.itemView.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(final View v) {

                                    CharSequence options[] = new CharSequence[]{"Accept Request", "Cancel Request"};
                                    final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());

                                    builder.setItems(options, new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            if (which == 0){
                                                acceptRequest(userID);

                                            }
                                            else if (which == 1){
                                                cancelRequest(userID,dialog);
                                            }
                                        }
                                    });
                                    builder.show();
                                }
                            });
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });

private void cancelRequest(final String uid, final DialogInterface dialog) {

    friendReqDbRef.child(uid).child(currentUser_uid).removeValue()
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()){
                    }
                }

            });

}

1 个答案:

答案 0 :(得分:1)

做AlertDialog的更好方法,只需将此代码添加到holder.itemView单击侦听器的旁边。

如果此答案有效,请接受。 谢谢。

            // Build an AlertDialog
            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());

            // Set a title for alert dialog
            builder.setTitle("Dialog Title");

            // Ask the final question
            builder.setMessage("Dialog Description");

            // Set click listener for alert dialog buttons
            DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch(which){
                        case DialogInterface.BUTTON_POSITIVE:
                            // User clicked the Accept button
                            acceptRequest(userID);
                            break;

                        case DialogInterface.BUTTON_NEGATIVE:
                            // User clicked the Cancel button
                            cancelRequest(userID,dialog);
                            break;
                    }
                }
            };

            // Set the alert dialog yes button click listener
            builder.setPositiveButton("Accept Request", dialogClickListener);

            // Set the alert dialog no button click listener
            builder.setNegativeButton("Cancel Request",dialogClickListener);

            AlertDialog dialog = builder.create();
            // Display the alert dialog on interface
            dialog.show();
相关问题