android - 返回活动后如何停止progressDialog?
问题描述
我为冥想应用程序制作了一个 ProgressDialog。按下冥想会话对应的 Cardview 后,出现一个 ProgressDialog 3 秒,然后打开另一个活动(m1 活动)。但是有一个大问题。返回 MeditationActivity 后,ProgressDialog 显示并且永不停止。
这是我正在使用的代码:
public class Meditation extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMeditationBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
findViewById(R.id.Med_1).setOnClickListener(v -> {
startActivity(new Intent(getApplicationContext(), m1.class));
progressDialog = new ProgressDialog(Meditation.this);
progressDialog.show();
progressDialog.setContentView(R.layout.loading_screen_first_version);
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
progressDialog.dismiss();
}
}
一些m1代码:
public class m1 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_m1);
findViewById(R.id.backm).setOnClickListener(v -> {
onBackPressed();
mediaPlayer.stop();
notificationManager.cancelAll();
});
解决方案
据我所知,我认为您希望在用户从m1
活动返回到冥想活动时隐藏进度对话框。
为此,您可以覆盖该onResume()
方法,因为当活动从非活动状态进入前台时会调用该方法。你应该在活动中添加这个Meditation
:
@Override
public void onResume(){
super.onResume();
if(progressDialog != null) progressDialog.dismiss();
}
@Yunis 的回答不起作用,因为当活动准备进入后台时也会调用 onPause,因此它根本不显示对话框!
顺便说一句,ProgressDialog
已弃用,您可能想寻找替代方案:)
推荐阅读
- javascript - 我可以在我的反应组件中获取我的 Key 的值吗
- powershell - 带有“-”和数字的 Powershell 拆分字符串
- android - 错误膨胀类 android.support.v7.widget.SearchView - android
- java - 需要使用 JPA @Query 返回自定义对象列表
- excel - 从同一位置另存为具有动态日期的文件
- typescript - Typescript babel-plugin-module-resolver
- javascript - 如何在单独的变量中获取数组值
- javascript - 在导航列表末尾添加更多按钮,一旦没有空间显示所有项目
- javascript - 在javascript中为客户端设置不同的时区
- python - 读取csv时如何解决Unicoder问题