gpt4 book ai didi

android - 显示 AlertDialog 后未调用 Activity 的 onpause 方法

转载 作者:行者123 更新时间:2023-12-04 23:51:55 25 4
gpt4 key购买 nike

我尝试使用下面的代码来检查 Activity 的回调,据我了解,每当对话框出现在 Activity 之上时,Activity 的 OnPause()方法应该调用。当对话框消失时 Activity 的 OnResume()应该触发。

令人惊讶的是,它并没有按照应有的方式发生。我已经在 Android M 6.0.1 上进行了测试

如果我错了,请纠正我,这是我的代码,

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onPause() {
Log.d("MainActivity", "onPause");
super.onPause();
}

@Override
protected void onResume() {
Log.d("MainActivity", "onResume");
super.onResume();
}

@Override
protected void onStart() {
super.onStart();
}

@Override
protected void onStop() {
super.onStop();
}


public void onClick(View view) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(MainActivity.this);
}
builder.setTitle("Delete entry")
.setMessage("Are you sure you want to delete this entry?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}

最佳答案

I have tried below code to check Activity's call backs, As of my understanding whenever dialog comes on top of Activity, Activity's OnPause() method should call. When dialog disappears Activity's OnResume() should trigger.



不。 Documentation is bit confusing .当您在 Activity 顶部调用对话框时, onPause()的 Activity 永远不会调用。换个角度想,对话框总是与调用 Activity 相关联,如果该 Activity 未处于运行状态,该对话框将如何可见?

实际上, onPause()只有在您调用另一个 时才会调用 Activity 作为对话框(使用对话框主题,或不覆盖全屏的 Activity ) .

从文档

onPause()


  • 一个新的、半透明的 Activity (例如对话框)打开。只要 Activity 仍然部分可见但不在焦点上,它就会保持暂停。


  • 您也可以阅读 Android: Under what circumstances would a Dialog appearing cause onPause() to be called?

    关于android - 显示 AlertDialog 后未调用 Activity 的 onpause 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582305/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com