2019年5月30日木曜日

android開発 シンプルなダイアログ表示

2019 Jun. 30.
2019 Jun. 29.
2019 Jun. 22.
2019 May 31.
2019 May 30.

参照元
https://developer.android.com/guide/topics/ui/dialogs
https://akira-watson.com/android/alertdialog.html
http://furudate.hatenablog.com/entry/2014/01/09/162421

[MainActivity]
  1. package YOUR.PACKAGE.alertdialogsample;
  2.  
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.content.DialogInterface;
  6. import android.support.annotation.NonNull;
  7. import android.support.v4.app.DialogFragment;
  8. import android.support.v4.app.FragmentManager;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.TextView;
  14.  
  15.  
  16. public class MainActivity extends AppCompatActivity {
  17.  
  18. Button button_dialog1, button_dialog2, button_dialog3;
  19. private TextView text_view;
  20. private FragmentManager flagmentManager;
  21.  
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.activity_main);
  26.  
  27. text_view = findViewById(R.id.text_view);
  28. button_dialog1 = findViewById(R.id.button_dialog1);
  29. button_dialog2 = findViewById(R.id.button_dialog2);
  30. button_dialog3 = findViewById(R.id.button_dialog3);
  31.  
  32.  
  33. // button_dialog1ボタンタップでAlertを表示させる
  34. button_dialog1.setOnClickListener(new View.OnClickListener() {
  35. @Override
  36. public void onClick(View v) {
  37. flagmentManager = getSupportFragmentManager();
  38.  
  39. // DialogFragment を継承したAlertDialogFragment1のインスタンス
  40. AlertDialogFragment1 dialogFragment = AlertDialogFragment1.newInstance(100);
  41. // DialogFragmentの表示
  42. dialogFragment.show(flagmentManager, "test alert dialog1");
  43. }
  44. });
  45.  
  46.  
  47. // button_dialog2ボタンタップでダイアログのメッセージを変えたAlertを表示させる
  48. // newInstance()への引数を変更してメッセージを変える
  49. button_dialog2.setOnClickListener(new View.OnClickListener() {
  50. @Override
  51. public void onClick(View v) {
  52. flagmentManager = getSupportFragmentManager();
  53.  
  54. // DialogFragmentを継承したAlertDialogFragment2のインスタンス
  55. AlertDialogFragment1 dialogFragment = AlertDialogFragment1.newInstance(200);
  56. // DialogFragmentの表示
  57. dialogFragment.show(flagmentManager, "test alert dialog2");
  58. }
  59. });
  60.  
  61.  
  62. // button_dialog3ボタンタップでItemを選択するAlertを表示させる
  63. button_dialog3.setOnClickListener(new View.OnClickListener() {
  64. @Override
  65. public void onClick(View v) {
  66. flagmentManager = getSupportFragmentManager();
  67.  
  68. // DialogFragment を継承したAlertDialogFragmentのインスタンス
  69. AlertDialogFragment2 dialogFragment = new AlertDialogFragment2();
  70. // DialogFragmentの表示
  71. dialogFragment.show(flagmentManager, "test alert dialog");
  72. }
  73. });
  74. }
  75.  
  76.  
  77. public void setTextView(String message){
  78. text_view.setText(message);
  79. }
  80.  
  81.  
  82. /*
  83. * DialogFragmentを継承したクラスAlertDialogFragment1
  84. */
  85. public static class AlertDialogFragment1 extends DialogFragment {
  86.  
  87. /*
  88. * コンストラクタを記述してはならない。
  89. * newInstance()でのsetArguments、onCreateDialog()でのgetArgumentsを利用する。
  90. */
  91. public static AlertDialogFragment1 newInstance( int requestCode) {
  92. AlertDialogFragment1 fragment = new AlertDialogFragment1();
  93.  
  94. Bundle arguments = new Bundle();
  95. arguments.putInt("reqCode", requestCode);
  96. fragment.setArguments(arguments);
  97.  
  98. return fragment;
  99. }
  100.  
  101. @Override
  102. @NonNull
  103. public Dialog onCreateDialog(Bundle savedInstanceState) {
  104.  
  105. int requestCode = getArguments().getInt("reqCode");
  106.  
  107. AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
  108.  
  109. switch (requestCode) {
  110. case 100:
  111. alert.setTitle("Test AlertDialog1");
  112. alert.setMessage("Message is 100");
  113. break;
  114.  
  115. case 200:
  116. alert.setTitle("Test AlertDialog2");
  117. alert.setMessage("Message is 200");
  118. break;
  119.  
  120. }
  121. alert.setPositiveButton(R.string.dialog_ok, null);
  122.  
  123. return alert.create();
  124. }
  125. }
  126.  
  127.  
  128. /*
  129. * DialogFragmentを継承したクラスAlertDialogFragment2
  130. */
  131. public static class AlertDialogFragment2 extends DialogFragment {
  132. // 選択肢のリスト
  133. private String[] menulist = {"選択(1)","選択(2)","選択(3)"};
  134.  
  135. @Override
  136. @NonNull
  137. public Dialog onCreateDialog(Bundle savedInstanceState) {
  138.  
  139. AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
  140.  
  141. alert.setTitle("Test AlertDialog3");
  142. alert.setItems(menulist, new DialogInterface.OnClickListener() {
  143. @Override
  144. public void onClick(DialogInterface dialog, int idx) {
  145. // 選択1
  146. if (idx == 0) {
  147. setMassage(menulist[0]);
  148. }
  149. // 選択2
  150. else if (idx == 1) {
  151. setMassage(menulist[1]);
  152. }
  153. // 選択3, idx == 2
  154. else{
  155. setMassage(menulist[2]);
  156. }
  157. }
  158. });
  159. return alert.create();
  160. }
  161.  
  162.  
  163. private void setMassage(String message) {
  164. MainActivity mainActivity = (MainActivity) getActivity();
  165. if (mainActivity != null) {
  166. mainActivity.setTextView(message);
  167. }
  168. }
  169. }
  170. }

0 件のコメント:

コメントを投稿