Как мне проверить, что рецепт сохраняется только один раз?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как мне проверить, что рецепт сохраняется только один раз?

Сообщение Anonymous »

Итак, у меня есть действие, которое сохраняет рецепт и отправляет данные в Firebase. Как сделать проверку, чтобы рецепт не сохранялся только один раз независимо от того, сколько раз пользователь нажал на кнопку?
Ниже приведен код активности.

Код: Выделить всё

public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private EditText edName,edCal;
private DatabaseReference mDataBase;
private ImageView imgRec;
private StorageReference mStorageRef;
private Uri uploadUri;
FirebaseAuth auth;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
init();

}

public void init(){
addRec = binding.buttonAddRec;
edName = binding.editTextName;
edCal = binding.editTextCal;
mDataBase = FirebaseDatabase.getInstance().getReference(Const.KEY_RECIPE);
imgRec = binding.imageRec;
mStorageRef = FirebaseStorage.getInstance().getReference("ImageDB");
}
//Called only when the uploadImage function is executed
//So yeah activity is closed only when imageUpload is done, I couldn't think of anything better
public void saveRecipe(){
String id = mDataBase.push().getKey();
String name = edName.getText().toString();
String cal = edCal.getText().toString();
RecipeBd newRecipe = new RecipeBd(id,name,cal,uploadUri.toString());
if(id != null)
{
mDataBase.child(id).setValue(newRecipe);
Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
Intent savedRecipe = new Intent(MainActivity.this, PickRecipeActivity.class);
startActivity(savedRecipe);
}
else {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
}

}
//func of the buttonAddRecipe
public void onClickSave(View view){

String name = edName.getText().toString();
String cal = edCal.getText().toString();
if (!TextUtils.isEmpty(name)&& !TextUtils.isEmpty(cal)){
uploadImage();
}
else {
Toast.makeText(this, "Empty Field", Toast.LENGTH_SHORT).show();
}

}
//func of the buttonAddPhoto
public void onClickChooseImage(View view){
getImage();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && data!=null && data.getData() != null) {
if(resultCode == RESULT_OK) {
Log.d("MyLog","Image URI:" + data.getData());
imgRec.setImageURI(data.getData());

}
}
}

private void getImage(){
Intent intentChooser = new Intent();
intentChooser.setType("image/*");
intentChooser.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intentChooser,1);

}
//upload on db Firebase
private void uploadImage(){
Bitmap bitMap = ((BitmapDrawable) imgRec.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitMap.compress(Bitmap.CompressFormat.JPEG,100,baos);
byte[] byteArray = baos.toByteArray();
final StorageReference mRef = mStorageRef.child(System.currentTimeMillis()+"Recipe");//The names depend on milliseconds
UploadTask up = mRef.putBytes(byteArray);
Task task = up.continueWithTask(new Continuation() {
@Override
public Task then(@NonNull Task task) throws Exception {
return mRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
uploadUri = task.getResult();
saveRecipe();

}
});
}
}
Может быть, я могу добавить индикатор выполнения над активностью? или есть лучший способ?
код макета Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... saved-once
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»