android - 从 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);
}
}
我的 FormDetailsServices:
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();
}
}
推荐阅读
- c# - ContextMenu IsOpen 属性始终为 false
- javascript - 如何在反应中通过单击按钮来捕获映射数据?
- typescript - 推断数组中的类型
- android - 自定义小部件主机启动器应用程序无法显示像数字时钟这样的小部件?
- r - 在没有管理员权限的情况下在 RMarkdown 主体中使用 Google 字体
- clojure - Clojure / Clojurescript 中的客户端/服务器反应同步
- java - 如何正确处理 Spring Security 中的预认证失败?
- python - Boto3 Cloudformation 错误:模板格式错误:不支持的结构
- asp.net - 在异常处理程序中看不到自定义响应
- python - 我怎样才能结束这个 BST 循环?