首页 > 解决方案 > 返回活动后如何停止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();
    });

标签: androidandroid-activityloadingprogressdialog

解决方案


据我所知,我认为您希望在用户从m1活动返回到冥想活动时隐藏进度对话框。

为此,您可以覆盖该onResume()方法,因为当活动从非活动状态进入前台时会调用该方法。你应该在活动中添加这个Meditation

@Override
public void onResume(){
    super.onResume();
    if(progressDialog != null) progressDialog.dismiss();
}

@Yunis 的回答不起作用,因为当活动准备进入后台时也会调用 onPause,因此它根本不显示对话框!

顺便说一句,ProgressDialog已弃用,您可能想寻找替代方案:)


推荐阅读