首页 > 解决方案 > 从 mainActivity 开始时停止另一个类的进度条

问题描述

有什么方法可以停止在 mainActivity 中启动的其他类的进度条

请找到我在主要活动中启动进度条的代码,然后调用我在firebase中插入数据的其他java类的方法我只想在firebase插入成功后进度条应该停止但没有找到任何方法要做到这一点

public class ProductDetails extends AppCompatActivity {
    ProgressBar progressbar;
    Button btn;
    FirebaseDatabase firebaseDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_details);
        
        progressbar = findViewById(R.id.btnprogressbar);
        btn = findViewById(R.id.submit_btn);
        firebaseDatabase = FirebaseDatabase.getInstance();

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressbar.setVisibility(View.VISIBLE);
                submitForm();
            }
        });
    }

    private void submitForm() {
        FormDetailsServices formDetailsServices = new FormDetailsServices(ProductDetails.this);
        FormDTO formDTO=generateForDTO();
        formDetailsServices.submitForm(formDTO,firebaseDatabase);
    }
}

我的 FormDetailsS​​ervices:

public class FormDetailsServices {
    Context context;
    final String TAG = "FormDetailsServices";

    public FormDetailsServices(Context context) {
        this.context = context;
    }

    public Context getContext() {
        return context;
    }

    public void setContext(Context context) {
        this.context = context;
    }
    
    public void submitForm(FormDTO formDTO,FirebaseDatabase firebaseDatabase) {

        firebaseDatabase
            .getReference()
            .child("test")
            .setValue(formDTO)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {

                Log.d(TAG,"form submitted Successfully");
                
               //here i want to stop progressbar 
               
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d(TAG,"form submittion Failed exception msg= " + e.getMessage());
            }
        });
    }
}
    

一切正常,它被插入到 Firebase 但进度条仍然可见

标签: androidprogress-bar

解决方案


您可以在 FormDetailsS​​ervices 类中创建一个接口并将其实现到您的主类,然后您可以通过在主类中调用其方法来隐藏进度条,如下所示 -

public class ProductDetails extends AppCompatActivity implements FormDetailsServices.OnFormSubmissionListener{
ProgressBar progressbar;
Button btn;
FirebaseDatabase firebaseDatabase;
OnFormSubmissionListener listener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_details);
    
    progressbar = findViewById(R.id.btnprogressbar);
    btn = findViewById(R.id.submit_btn);
    firebaseDatabase = FirebaseDatabase.getInstance();

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            progressbar.setVisibility(View.VISIBLE);
            submitForm();
        }
    });
}

private void submitForm() {
    FormDetailsServices formDetailsServices = new 
    FormDetailsServices(ProductDetails.this);
    formDetailsServices.setOnFormSubmissionListener(this);
    FormDTO formDTO=generateForDTO();
    formDetailsServices.submitForm(formDTO,firebaseDatabase);
}
@Override
public void onSubmissionSuccess() {
    progressbar.setVisibility(View.GONE);
}

@Override
public void onSubmissionFailure() {
    progressbar.setVisibility(View.GONE);
}
}

和 FormDetailsS​​ervices

public class FormDetailsServices {
Context context;
final String TAG = "FormDetailsServices";
OnFormSubmissionListener listener;

public FormDetailsServices(Context context) {
    this.context = context;
}

public Context getContext() {
    return context;
}

public void setContext(Context context) {
    this.context = context;
}

void setOnFormSubmissionListener(OnFormSubmissionListener listener){
    this.listener = listener;
}

public void submitForm(FormDTO formDTO,FirebaseDatabase firebaseDatabase) {

    firebaseDatabase
        .getReference()
        .child("test")
        .setValue(formDTO)
        .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {

            Log.d(TAG,"form submitted Successfully");
            
           //here i want to stop progressbar 
            listener.onSubmissionSuccess();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
        listener.onSubmissionFailure();
            Log.d(TAG,"form submittion Failed exception msg= " + e.getMessage());
        }
    });
}
interface OnFormSubmissionListener { 
     void onSubmissionSuccess();     
     void onSubmissionFailure(); 
 }
}

推荐阅读