当progressbar从mainActivity启动时,从另一个类停止它



是否有任何方法可以停止在mainActivity 中启动的其他类的进度条

请查找代码我在主活动中启动进度条,然后调用其他java类的方法我在firebase中插入数据的位置我只想在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);
}
}

我的表单详细信息服务:

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,但进度条仍然可见

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

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);
}
}

和FormDetailsServices

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(); 
}
}

最新更新