2020 May 30.
2020 Apr. 29.
表示中に画面回転すると破棄されるAlertDialog
カメラパーミッションを許可する時のAlertDialog例
private fun allowCameraPermission() { if (shouldShowRequestPermissionRationale( Manifest.permission.CAMERA )) { // ユーザーに許可が必要な理由を示すべき場合 AlertDialog.Builder(this) .setTitle("パーミッションが必要な説明") .setMessage("このアプリにはカメラ利用許可が必要です") .setPositiveButton( android.R.string.ok, DialogInterface.OnClickListener { _, _ -> // OKのとき ActivityCompat.requestPermissions( this,arrayOf(Manifest.permission.CAMERA), REQUEST_CODE_CAMERA_PERMISSION) }) .create() .show() } else { ActivityCompat.requestPermissions( this,arrayOf(Manifest.permission.CAMERA), REQUEST_CODE_CAMERA_PERMISSION) } }
画面回転しても破棄されないAlertDialog
参考元
https://developer.android.com/guide/topics/ui/dialogs?hl=ja#java
https://akira-watson.com/android/fragment-code.html
MainActivity.kt
package YOUR.PACKAGE.PROJECT import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val supportFragmentManager = getSupportFragmentManager() buttonShowDialog.setOnClickListener { val dialogFragment = AlertDialogFragment() dialogFragment.show(supportFragmentManager,"myDialog") // "myDialog" -> https://teratail.com/questions/88709 } } }
AlertDialogFragment.java
package YOUR.PACKAGE.PROJECT import android.app.Dialog import android.os.Bundle import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment import kotlinx.android.synthetic.main.activity_main.* class AlertDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = AlertDialog.Builder(activity!!) builder.setMessage("MyMessage") .setPositiveButton("OK") { dialog, id -> activity!!.textViewShowResultDialog.setText(R.string.dialog_ok) } .setNegativeButton("Cancel") { dialog, id -> activity!!.textViewShowResultDialog.setText(R.string.dialog_cancel) } return builder.create() } }