java - ProgressDialog 打破了我的脖子并消除了方法问题

标签 java android android-studio

我制作了一个食谱应用程序,我一直在解决一些问题,因为我无法运行该应用程序,但似乎每次修复错误时都会出现另一个错误,我的项目无法解决方法解雇()我不知道该怎么办,我已经根据 Youtube channel 制作了这个应用程序,但这给了我很多问题,我不知道我是否错过了一些代码或者是否是其他东西,我也注意到我的 Dialog.java 中有很多东西无法解析,例如 setDefaultIcon、WindowDecorActionBar、@UnsupportedAppUsage、isDestroyed、setShowHideAnimationEnabled、IdRes 等等,我什至不知道所有这些都来自哪里'我在这里有点迷失。

这是我的 Upload_Recipe Activity :

package com.example.recipeapp;

import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.text.DateFormat;
import java.util.Calendar;

public class Upload_Recipe extends AppCompatActivity {

    ImageView recipeImage;
    Uri uri;
    EditText txt_name, txt_description, txt_price;
    String imageUrl;
    Object progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload__recipe);

        recipeImage = (ImageView) findViewById(R.id.iv_foodImage);
        txt_name = (EditText) findViewById(R.id.txt_recipe_name);
        txt_description = (EditText) findViewById(R.id.text_description);
        txt_price = (EditText) findViewById(R.id.text_price);


    }

    public void btnSelectImage(View view) {

        Intent photoPicker = new Intent(Intent.ACTION_PICK);
        photoPicker.setType("image/*");
        startActivityForResult(photoPicker, 1);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {

            uri = data.getData();
            recipeImage.setImageURI(uri);

        } else Toast.makeText(this, "Você não selecionou uma imagem", Toast.LENGTH_SHORT).show();
    }

    public void uploadImage() {

        StorageReference storageReference = FirebaseStorage.getInstance()
                .getReference()
                .child("RecipeImage")
                .child(uri.getLastPathSegment());

        storageReference.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
                while (!uriTask.isComplete()) ;
                Uri urlImage = uriTask.getResult();
                if (urlImage != null) {
                    imageUrl = urlImage.toString();
                }
                uploadRecipe();
                progressDialog.dismiss();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                progressDialog.dismiss();
            }
        });
    }

    public void btnUploadRecipe(View view) {

        uploadImage();

    }

    public void uploadRecipe() {

        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Enviando Receita...");
        progressDialog.show();
        progressDialog.dismiss();
        finish();

        FoodData foodData = new FoodData(txt_name.getText().toString()
                , txt_description.getText().toString(), txt_price.getText().toString()
                , imageUrl);

        String myCurrentDateTime = DateFormat.getDateTimeInstance()
                .format(Calendar.getInstance().getTime());

        FirebaseDatabase.getInstance()
                .getReference("Recipe")
                .child(myCurrentDateTime).setValue(foodData).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {

                if (task.isSuccessful()) {

                    Toast.makeText(Upload_Recipe.this, "Receita Enviada", Toast.LENGTH_SHORT).show();
                    finish();

                }

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(Upload_Recipe.this, "Falha ao Enviar", Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();
            }
        });
    }

    private void ProgressDialog(Object progressDialog) {
        this.progressDialog = progressDialog;
        ProgressDialog(progressDialog);
    }
}

最佳答案

您将 progressDialog.dismiss(); 这行代码写入 uploadRecipe 方法中。

uploadRecipe();            
progressDialog.dismiss(); //Remove this line

关于java - ProgressDialog 打破了我的脖子并消除了方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486636/

相关文章:

java - 在 Android 上将 Bitmap() 分享到推特、 Facebook 、邮件

android - 在以后的任务可以使用它们之前,如何阻止 gradle 删除我的中间文件?

android - 是否可以将这些文件夹分配到另一个地方?

Android-减少检索数据的时间

android - 膨胀底部导航 View 时出错

java - IDN.toASCII 协议(protocol)必须先删除吗?

java - 查找所有包含关键字的子字符串

java - 使用 SpringBoot、Spring-MVC 和 Maven 的 WebApp 中不包含 WEB-INF

java - 如何将 Json 数组存储到 Java ArrayList 中?

php - 检查 mysql 中的表的名称