2015-10-29 23 views
1

我有一個DialogFragment,顯示一週的日子和複選框。我的問題很簡單(但我不能這樣做)如何在保存我的選擇時再次打開DialogFragment我可以看到上次啓用的日子。如何顯示在DialogFragment中回滾時檢查的項目

因爲我不能做這樣的事情mSelectedItems.add(which).setChecked(true)。

在此先感謝。

public class DayFragment extends DialogFragment { 

    protected String[] listitems = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; 


    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final ArrayList mSelectedItems = new ArrayList(); // Where we track the selected items 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

     builder.setMultiChoiceItems(listitems, null, new DialogInterface.OnMultiChoiceClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
         if (isChecked) { 
          // If the user checked the item, add it to the selected items 
          mSelectedItems.add(which); 

          if(listitems[which].equals("Monday")){ 
           Toast.makeText(getActivity(), listitems[which], Toast.LENGTH_SHORT).show(); 
          } 


         } else if (mSelectedItems.contains(which)) { 
          // Else, if the item is already in the array, remove it 
          mSelectedItems.remove(Integer.valueOf(which)); 
          if(listitems[which].equals("Monday")){ 
           Toast.makeText(getActivity(), "Unchecked " + listitems[which], Toast.LENGTH_SHORT).show(); 
          } 
         } 
        } 
       }) 
       .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 

        } 
       }); 

     return builder.create(); 
    } 
+0

爲什麼不將選定的值保存到SharedPreferences中? – 4gus71n

+0

我在首選項中設置了該值,但是當我回來打開對話框時,所有的checboxes都不可用 –

+0

您不應該將這些值保留在負責打開該對話框片段的活動或片段上嗎? –

回答

0

你設置爲null檢查的值的數組: builder.setMultiChoiceItems(listitems, null, new DialogInterface.OnMultiChoiceClickListener());

檢查this。您需要做的是將檢查值保存爲您的SharedPreferences中的Set,然後在執行setMultiChoiceItems之前從SharedPreference中帶回這些值。

相關問題