質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1175閲覧

onCreateDialogを使ったDiaLogにてチェックボックスが表示されない問題

HozDer

総合スコア25

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2022/03/03 17:05

編集2022/03/03 17:08

前提・実現したいこと

onCreateDialogを使用したDiaLogにて
setMultiChoiceItemsを利用したチェックボックスを表示されない問題を解決したい。

目標としている画像
https://gyazo.com/a1b09d3c6f52f5724a5615cd7379205c
このチェックボックスのみ表示されてない状態です

現在問題となっている画像
https://gyazo.com/6a8e945f6b89c0354784cb86c2f5c4bb

発生している問題・エラーメッセージ

無し

該当のソースコード

AddTaskDiaLogFragment.java

java

1 2public class AddTaskDialogFragment extends DialogFragment { 3 4中略 5 6 7 @NonNull 8 @Override 9 public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { 10 11 CharSequence[] items = {"重要","test","aaa"}; 12 boolean[] itemChecked = new boolean[items.length]; 13 14 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 15 16 //ダイアログのレイアウトを適用 17 LayoutInflater inflater = requireActivity().getLayoutInflater(); 18 builder.setView(inflater.inflate(R.layout.add_task_dialog, null)); 19 20 builder.setMessage("タスクの追加") 21 22 23・・・・・・・・問題箇所・・・・・・・・・・・・・・・・・・・・ 24 .setMultiChoiceItems(items, itemChecked, new DialogInterface.OnMultiChoiceClickListener() { 25 @Override 26 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 27 28 } 29 }) 30・・・・・・・・問題箇所・・・・・・・・・・・・・・・・・・・・ 31 32 33 34 .setPositiveButton("OK",new DialogInterface.OnClickListener(){ 35 public void onClick(DialogInterface dialog,int id){ 36 EditText editText = (EditText) getDialog().findViewById(R.id.task_text); 37 if (editText != null) { 38 //タスク追加処理 39 disposable.add(taskModel.insertTask(editText.getText().toString()) 40 .subscribeOn(Schedulers.io()) 41 .observeOn(AndroidSchedulers.mainThread()) 42 .subscribe(() -> {}, 43 throwable -> Log.e(TAG, "Unable to update username", throwable))); 44 } else { 45 //例外 46 Log.e("", "EditText not found!"); 47 } 48 } 49 }) 50 .setNegativeButton("キャンセル", new DialogInterface.OnClickListener() { 51 @Override 52 public void onClick(DialogInterface dialog, int id) { 53 //user cancelled the dialog 54 } 55 }); 56 57 return builder.create(); 58 59 } 60}

add_task_dialog.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="wrap_content" 5 android:layout_height="wrap_content"> 6 7 <EditText 8 android:id="@+id/task_text" 9 android:inputType="text" 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:layout_marginTop="16dp" 13 android:layout_marginLeft="4dp" 14 android:layout_marginRight="4dp" 15 android:layout_marginBottom="4dp" /> 16 17 18</LinearLayout>

試したこと

”チェックボックス 表示されない”などの形で調べてもうまく出てこないためどのような調べ方から進めればよいかわからないです。

本来表示したい形はチェックボックス一つのみですが
setMultiChoiceItems自体が複数表示する用のメソッドなので一旦複数表示される形で変数を用意するも効果なし

補足情報(FW/ツールのバージョンなど)

Windows10 AndroidStudio java

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

setView でカスタムレイアウトをコンテンツ領域に表示していますので、そのコンテンツ領域に表示するオプションは使えないのではないでしょうか。
チェックボックス1つ位なら単にカスタムレイアウトに追加してしまえば良いと思います。

AddTaskDialogFragment.java

java

1public class AddTaskDialogFragment extends DialogFragment { 2 private static final String TAG = "AddTaskDialogFragment"; 3 4 @NonNull 5 @Override 6 public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { 7 View view = LayoutInflater.from(getContext()).inflate(R.layout.add_task_dialog, null); 8 9 EditText editText = view.findViewById(R.id.task_text); 10 CheckBox checkBox = view.findViewById(R.id.task_important); 11 12 return new AlertDialog.Builder(getContext()) 13 .setView(view) //ダイアログのレイアウトを適用 14 .setMessage("タスクの追加") 15 .setPositiveButton("OK", (dialog,id) -> onPositive(editText.getText().toString(), checkBox.isChecked())) 16 .setNegativeButton("キャンセル", (dialog,id) -> {}) 17 .create(); 18 } 19 20 private void onPositive(String task_text, boolean task_important) { 21 Log.d(TAG, "task_text="+task_text+", task_important="+task_important); 22 /* 23 //タスク追加処理 24 disposable.add(taskModel.insertTask(task_text) 25 .subscribeOn(Schedulers.io()) 26 .observeOn(AndroidSchedulers.mainThread()) 27 .subscribe(() -> {}, throwable -> Log.e(TAG, "Unable to update username", throwable))); 28 */ 29 } 30}

res/layout/add_task_dialog.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:orientation="vertical" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent"> 7 8 <EditText 9 android:id="@+id/task_text" 10 android:inputType="text" 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:layout_marginTop="16dp" 14 android:layout_marginLeft="4dp" 15 android:layout_marginRight="4dp" 16 android:layout_marginBottom="4dp" /> 17 18 <CheckBox 19 android:id="@+id/task_important" 20 android:text="重要" 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" /> 23 24</LinearLayout>

投稿2022/03/03 17:54

編集2022/03/03 18:56
jimbe

総合スコア13318

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HozDer

2022/03/04 00:10

回答ありがとうございます。 よくよく考えるとxmlで良かったですね。 また、Dialogの処理部分を違う書き方で訂正していただきありがとうございます。 勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問