@Override
protected void onResume() {
super.onResume();
if (!isDialogShown) { // 防止重複彈出
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("內容")
.setPositiveButton("確定", null)
.show();
isDialogShown = true;
}
}
onCreate 時 View 尚未附加到 Window,Dialog 可能顯示異常或崩潰(BadTokenException)。onStart 也可,但 onResume 確保 Activity 處於**前台可互動狀態**。Context:傳 this(Activity 本身)。AlertDialog.Builder:鏈式設定標題、訊息、按鈕。.show():建立並顯示 Dialog,回傳 Dialog 實例可持有引用。
public class MyDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(requireActivity())
.setTitle("標題")
.setMessage("訊息")
.setPositiveButton("確定", null)
.create();
}
}
// Activity 中顯示
new MyDialogFragment().show(getSupportFragmentManager(), "MyDialog");
onResume + AlertDialog.Builder 最簡單;需配置變更保留狀態用 DialogFragment。