我在片段中创建了一个警报对话框。它显示了当用户单击项目视图时,以及当用户单击警报对话框选项时,它使应用程序崩溃。 仅当对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()){
}
}
});
}
答案 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();