如何在返回 activity 后停止 progressDialog?
How can I stop the progressDialog after returning to the activity?
我为冥想应用制作了 ProgressDialog。按下冥想会话对应的Cardview后,出现一个ProgressDialog 3秒,然后另一个activity打开(m1activity)。但是有一个大问题。返回 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();
});
您在错误的位置关闭了 progressDialog。您可以关闭进度对话框,例如在 activity
的 onPause() 方法中
@Override
protected void onPause() {
super.onPause();
progressDialog.dismiss();
}
据我判断,我认为当用户 returns 从 m1
activity 回到冥想 activity 时,您希望隐藏进度对话框。
为此,您可以覆盖 onResume()
方法,因为当 activity 从非活动状态进入前台时会调用该方法。您应该将其添加到 Meditation
activity:
@Override
public void onResume(){
super.onResume();
if(progressDialog != null) progressDialog.dismiss();
}
@Yunis 的回答不起作用,因为当 activity 准备进入后台时也会调用 onPause,所以它根本不显示对话框!
顺便说一句,ProgressDialog
已弃用,您可能需要查找 alternatives :)
我为冥想应用制作了 ProgressDialog。按下冥想会话对应的Cardview后,出现一个ProgressDialog 3秒,然后另一个activity打开(m1activity)。但是有一个大问题。返回 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();
});
您在错误的位置关闭了 progressDialog。您可以关闭进度对话框,例如在 activity
的 onPause() 方法中@Override
protected void onPause() {
super.onPause();
progressDialog.dismiss();
}
据我判断,我认为当用户 returns 从 m1
activity 回到冥想 activity 时,您希望隐藏进度对话框。
为此,您可以覆盖 onResume()
方法,因为当 activity 从非活动状态进入前台时会调用该方法。您应该将其添加到 Meditation
activity:
@Override
public void onResume(){
super.onResume();
if(progressDialog != null) progressDialog.dismiss();
}
@Yunis 的回答不起作用,因为当 activity 准备进入后台时也会调用 onPause,所以它根本不显示对话框!
顺便说一句,ProgressDialog
已弃用,您可能需要查找 alternatives :)