■ はじめに
https://dk521123.hatenablog.com/entry/2013/10/14/002656
https://dk521123.hatenablog.com/entry/2013/10/05/214058
https://dk521123.hatenablog.com/entry/2013/10/06/122942
の続き。 今回は、リスト選択のダイアログを表示する。
目次
【1】サンプル 【2】トラブルシューティング
【1】サンプル
Kotlin
button.setOnClickListener { val targetList = arrayOf("One", "Two", "Three") val dialog = AlertDialog.Builder(this) dialog.setTitle("Hello World") dialog.setItems(targetList) { _, index -> val value = targetList[index] Toast.makeText(this, "Result = $value", Toast.LENGTH_SHORT).show() } dialog.setNegativeButton("Cancel") { _, _ -> // Do Nothing } dialog.show() }
Java
activity_main.xml
* button x 1、EditText x1 を画面に追加
MainActivity.java
import com.example.dialog.SampleDialogClickHandler; import com.example.dialog.SampleMultiChoiceClickHandler; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button button1; private EditText editText1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.button1 = (Button) findViewById(R.id.button1); this.button1.setOnClickListener(this); this.editText1 = (EditText)findViewById(R.id.editText1); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: // ★ここでリスト選択表示★ String[] items = new String[] {"Java", "C/C++"}; AlertDialog.Builder dialog1 = new AlertDialog.Builder(this); dialog1.setTitle("Hello, Title!"); dialog1.setIcon(1); dialog1.setItems(items, new SampleDialogClickHandler(this.editText1)); dialog1.setNeutralButton("Cancel", new SampleDialogClickHandler(this.editText1)); dialog1.show(); break; } } }
SampleDialogClickHandler.java
import android.app.AlertDialog; import android.content.DialogInterface; import android.widget.EditText; public class SampleDialogClickHandler implements DialogInterface.OnClickListener { private String choosedData = null; private EditText editText1; public SampleDialogClickHandler(EditText editText1) { this.editText1 = editText1; } @Override public void onClick(DialogInterface arg0, int arg1) { switch(arg1){ case AlertDialog.BUTTON_NEUTRAL: this.choosedData = null; this.editText1.setText("Click Cancel."); break; case 0: this.choosedData = "Java"; this.editText1.setText(String.format("You chose %s", this.choosedData)); break; case 1: this.choosedData = "C/C++"; this.editText1.setText(String.format("You chose %s", this.choosedData)); break; } } }
【2】トラブルシューティング
リスト選択/チェックボックス/ラジオボタンのダイアログが表示されない
* リスト選択/チェックボックス/ラジオボタンのダイアログが表示されない * 大分、はまった...
原因
* 「setMessage」を使用していた
サンプル
... dialog.setMessage("Hello, Dialog Message!"); // ★設定してたら表示されない★ ...
解決策
* 「setMessage」を削除
参考資料
http://fernweh.jp/b/android-alertdialog/
http://androyer.blogspot.jp/2011/07/alertdialog.html
参考資料
Kotlin
https://qiita.com/hokutonikukyu/items/ebbc0318c07035e04bf7
色々なサイトを見たが、以下が一番分かりやすい
http://blog.oukasoft.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0/%E3%80%90android%E3%80%91%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%EF%BC%88alertdialog%EF%BC%89%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
このサイトもいい
http://www.hakkaku.net/articles/20090924-581
関連記事
ダイアログ表示 ~ 入門編 / トースト・Toast ~
https://dk521123.hatenablog.com/entry/2013/10/14/002656
ダイアログ表示 ~ 基本編 / アラートダイアログ ~
https://dk521123.hatenablog.com/entry/2013/10/05/214058
ダイアログ表示 ~ 基本編 / YES/NO/CANCELボタン ~
https://dk521123.hatenablog.com/entry/2013/10/06/122942
ダイアログ表示 ~ 基本編 / チェックボックス・ラジオボタン ~
https://dk521123.hatenablog.com/entry/2013/10/09/001500
ダイアログ表示 ~ 基本編 / 日付・時間ダイアログ ~
https://dk521123.hatenablog.com/entry/2020/07/26/000000
ダイアログ表示 ~ 基本編 / Notification(通知) ~
https://dk521123.hatenablog.com/entry/2020/08/01/000000