2016-10-12 2 views
0

Im Versuch, eine Schaltfläche, die sagt "Choose Drink", wenn der Benutzer auf den Button klickt, erscheint ein Dialogfeld mit einer Liste von Getränken, die ich in einem Array gespeichert habe.Ich kann nicht mein Dialogfeld Kontrollkästchen in Android Studio

Ich weiß, das Problem ist, wo ive sagte "boolean ist geprüft", aber ich brauche das, weil meine Artikel in einem Array gespeichert sind. jemand hilft bitte! wenn ich entferne boolean geprüft wird dann offensichtlich i einen Fehler auf der if-Anweisung bekommen, wo es heißt „isChecked“

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

Wann tritt der Fehler passiert, und wie? –

+0

zur Zeit bekomme ich einen Fehler (rote Unterstreichung) auf dialogInterface.OnclickListener sagen Klasse anonyme 'Klasse abgeleitet von onclicklistener' dann habe ich auch eine rote Unterstreichung auf die Überschreibung, die darunter ist. Wenn ich "boolean is checked" lösche, gehen diese Fehler, aber dann funktioniert die if-Anweisung nicht –

+0

Das liegt daran, dass Sie einen zusätzlichen Parameter zum 'onClick' hinzugefügt haben, wenn diese Methode nicht für' DialogInterface.OnClick' existiert. – Pztar

Antwort

1

Verwenden

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

, wenn Sie mit einem einzigen Wahl Optionsfeld arbeiten. Wählen Sie das Objekt am angegebenen Index aus. Mehr brauchen Sie nicht, um Ihren Artikel hinzuzufügen.

Ich würde keine Liste vorschlagen, um Elemente für eine einzige Option hinzuzufügen. Ordnen Sie den Index stattdessen einer Variablen zu und fügen Sie diese Variable dann zu Ihrer Liste hinzu, wenn Sie OK drücken. Andernfalls haben Sie eine unnötige Löschlogik für eine einzelne Auswahloption.

für Ihre Artikel:

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

Für Ihre Taste:

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

Vielen Dank für Ihre Antwort . Also sagen Sie nicht eine Array-Liste? –

+0

Der einzige Fehler, den es jetzt zu bekommen gibt, kann die Methode "mySelectedChoice" nicht lösen. –

+0

Entweder 'mySelectedChoice' als globale Variable setzen oder eine Setter-Methode dafür verwenden. Dann holen Sie es nachher ab. Sie sollten eine 'ArrayList' für Multi-Choice-Optionen verwenden, sie ist für Single-Choice überflüssig, es sei denn, Sie fügen alle diese Single-Choice-Optionen zu einer endgültigen Liste hinzu. – Pztar

Verwandte Themen