所以我前段时间在Android Studio中编写了此代码,现在我又回到了它来更新该应用程序。在本活动中,我可以选择一个图片,向其中写入一些文本,然后将其发布并保存到我的Firebase数据库中。但是我不能简单地写一个文本并发布它,我真的不知道现在怎么样。如果我不选择图片,只需要选择一个选项,就应该没有...
我已经四处张望了,但是什么也没找到。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
PostImageReference = FirebaseStorage.getInstance().getReference();
mAuth = FirebaseAuth.getInstance();
current_user_id = mAuth.getCurrentUser().getUid();
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
PostsRef = FirebaseDatabase.getInstance().getReference().child("Posts");
SelectPostImage = (ImageButton) findViewById(R.id.select_post_image);
UpdatePostButton = (Button) findViewById(R.id.update_post_button);
PostDescription = (EditText) findViewById(R.id.post_description);
UpdatePostButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ValidatePostInfo();
}
});
}
private void ValidatePostInfo() {
Description = PostDescription.getText().toString();
if(ImageUri==null){
Toast.makeText(this, "Please Select a Post Image", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(Description)){
Toast.makeText(this, "Cannot post this without any text!", Toast.LENGTH_SHORT).show();
}
else {
loadingBar.setTitle("Add new Post");
loadingBar.setMessage("Please wait while post is updating...");
loadingBar.show();
loadingBar.setCanceledOnTouchOutside(true);
StoringImageToFirebaseStorage();
}
}
private void StoringImageToFirebaseStorage() {
Calendar calForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("yyyy-MM-dd");
saveCurrentDate = currentDate.format(calForDate.getTime());
Calendar calForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm");
saveCurrentTime = currentTime.format(calForTime.getTime());
postRandomName = saveCurrentDate + saveCurrentTime + current_user_id;
final StorageReference filePath = PostImageReference.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()){
throw task.getException();
}
return filePath.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
Uri downUri = task.getResult();
Toast.makeText(PostActivity.this, "Image uploaded successfully to Database...", Toast.LENGTH_SHORT).show();
downloadUrl = downUri.toString();
SavingPostInformationToDatabase();
}
else{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error: " + message, Toast.LENGTH_SHORT).show();
}
}
});
}
private void SavingPostInformationToDatabase() {
UsersRef.child(current_user_id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
String userFullName = dataSnapshot.child("fullname").getValue().toString();
String userProfileImage = dataSnapshot.child("profileimage").getValue().toString();
TagUser(Description);
createNotification(userFullName, Description);
HashMap postsMap = new HashMap();
postsMap.put("uid", current_user_id);
postsMap.put("date", saveCurrentDate);
postsMap.put("time",saveCurrentTime);
postsMap.put("description", Description);
postsMap.put("postimage", downloadUrl);
postsMap.put("profileimage", userProfileImage);
postsMap.put("fullname", userFullName);
PostsRef.child(postRandomName).updateChildren(postsMap)
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()){
SendUserToMainActivity();
Toast.makeText(PostActivity.this, "Post update Successul!", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(PostActivity.this, "Error occured while updating your post.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}