2016-10-12 14 views
0

ユーザーがボタンをクリックしたときに「ドリンクを選んでください」というボタンが表示されているので、アレイに保存されているドリンクのリストがダイアログに表示されます。アンドロイドスタジオでダイアログボックスのチェックボックスが表示されない

私は、問題が "ブール値がチェックされました"と言いましたが、私のアイテムは配列に格納されているので、それが必要です。誰か助けてください!私はブール値が、私は明らかにそれは言うif文でエラーを取得するチェックされて削除した場合、あなたは、単一の選択ラジオボタンで作業している場合 は

onClick(DialogInterface dialog, int which) { 
    list.add(items[which]); 
} 

使用

package com.example.liamchowney.myappoctober; 


import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.support.v4.app.DialogFragment; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 




public class Multiselection extends DialogFragment { 

private static TextView text_view; 
ArrayList<String> list = new ArrayList<String>(); //to store selection 

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
    final String [] items = getResources().getStringArray(R.array.my_drinks_selection); //gets array items to screen 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle("Choose drink").setSingleChoiceItems(R.array.my_drinks_selection, null, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) { 

      if(isChecked) 
      { 
       list.add(items[which]); //adds selected item 
      } 
      else if(list.contains(items[which])) 
      { 
       list.remove(items[which]); //removes selected item if they uncheck 
      } 

     } 
    }).setPositiveButton("OK", new DialogInterface.OnClickListener() { //to display the selected item done by user 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      String selections = ""; //default value 
      for(String ms : list) 
      { 
       selections = selections + "\n" +ms; 
      } 
      Toast.makeText(getActivity(), "Drink Selection :" +selections, Toast.LENGTH_LONG).show(); 

     } 
    }); 
    return builder.create(); 
    } 
} 
+0

エラーが発生し、どのようにでしょうか? –

+0

現在、私はclassInterface.OnclickListenerのクラスanonymous 'class由来のクラスonclicklistener'にエラー(赤い下線)が表示され、次にその下にオーバーライドしている赤い下線も表示されています。 "boolean is checked"を削除すると、これらのエラーは出ますが、ifステートメントは動作しません。 –

+0

これは、 'DialogInterface.OnClick'にそのメソッドが存在しないときに、' onClick'に追加のパラメータを追加したためです。 – Pztar

答えて

1

を「にisChecked」。これは指定したインデックスの項目を選択します。これでアイテムを追加するだけです。

私は単一の選択肢のオプションの項目を追加するためのリストを提案しません。その代わりに、変数にインデックスを割り当ててから、OKを押すとその変数をリストに追加します。そうしないと、単一の選択肢に対して不要なロジックを削除することができます。あなたの項目について

:あなたのボタンについては

onClick(DialogInterface dialog, int which) { 
    mySelectedChoice = which; 
} 

onClick(DialogInterface dialog, int which) { 
    list.add(items[mySelectedChoice]); 
    //rest of your logic 
} 
+0

ありがとうに保存されているthatsの文句を言わないの負荷 –

+0

"mySelectedChoice"メソッドを解決できない唯一のエラーは –

+0

グローバル変数として 'mySelectedChoice'を設定するか、それに対してセッターメソッドを使用します。その後、それを取得します。複数選択肢のオプションのために 'ArrayList'を使うべきです。あなたがそれらの全ての選択肢のオプションを1つの最終的なリストに追加しない限り、それは1つの選択肢に対して冗長です。 – Pztar

関連する問題