2010-06-07 4 views
0

В описании how to add a list опций AlertDialog официальная документация на Android ссылается на сохранение предпочтений пользователей с одним из «data storage techniques». Примеры предполагают, что AlertDialog был порожден в классе Activity.Как сохранить параметры, выбранные в AlertDialog, порожденные методом ItemizedOverlay onTap

В моем случае я создал класс, который расширяет ItemizedOverlay. Этот класс переопределяет метод onTap и использует команду AlertDialog, чтобы побудить пользователя сделать multi-choice selection. Я хотел бы захватить и сохранить выбор для каждого OverlayItem, на который они нажимают.

Ниже приведен код onTap, который я написал. Он функционирует так, как написано, но еще не делает того, что я надеюсь. Я хотел бы захватить и сохранить каждый выбор, сделанный пользователем, который будет использоваться позже. Как мне это сделать? Использует ли этот способ AlertDialog? Есть ли лучшие варианты?

protected boolean onTap(int index) 
{ 
    OverlayItem item = _overlays.get(index); 
    final CharSequence[] items = { "WiFi", "BlueTooth" }; 
    final boolean[] checked = { false, false }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(_context); 
    builder.setTitle(item.getTitle()); 
    builder.setMultiChoiceItems(items, checked, new 
     DialogInterface.OnMultiChoiceClickListener() 
     { 
      @Override 
      public void onClick(DialogInterface dialog, int item, 
       boolean isChecked) 
       { 
        // for now just show that the user touched an option 
        Toast.makeText(_context, items[item], 
        Toast.LENGTH_SHORT).show(); 
       } 
     }); 
    builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int id) 
     { 
      // should I be examining what was checked here? 
      dialog.dismiss(); 
     } 
    }); 

    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.cancel(); 
     } 
    }); 

    AlertDialog alert = builder.create(); 
    alert.show(); 
    return true; 
} 
+0

Извините, но я не понимаю точно, чего вы пытаетесь достичь. В чем ваш вопрос? – JRL

+0

@JRL Я переработал вопрос, надеюсь, мои намерения более ясны. Извините за огромный код-блок, очень новый для разработки Android, и я не уверен, что уместно на данный момент. : \ – ahsteele

+0

Пока неясно, каков ваш вопрос. В вашей прозе нет никаких вопросительных знаков. Не компилируется ли код? Является ли код неудачным с исключением (и если да, то какова трассировка стека)?Что-то еще не так? – CommonsWare

ответ

0

Ну вы могли бы создать HashMap<OverLayItem, List<String>> или HashMap<OverLayItem, List<Boolean>>, чтобы сохранить настройки для каждого элемента, если вам нужно получить доступ к нему только в памяти, или если вам нужно более постоянное хранилище вы можете использовать либо предпочтение или базы данных или другие средства, как описано в указанной вами ссылке. Затем вы обновите хэшмапы или свою базу данных в положительном onClick().

0

Я хотел бы хранить каждый выбор сделал пользователем для последующего использования. Как сделать это ?

Ну, на тактическом уровне, в вашем onClick(), вы можете записать данные в базу данных SQLite.

Однако, похоже, что вы помещаете пресловутую тележку перед так же пресловутой лошадью. Если вы на самом деле не планируете что-то делать с данными, не заставляйте пользователя использовать диалоговые окна. Если вы знаете, что хотите делать с данными, то, что вы хотите сделать с этим, казалось бы, диктовали ваш механизм хранения намного больше, чем тот факт, что это AlertDialog, поднятый ItemizedOverlay.

Использует AlertDialog таким образом хорошая идея? Есть ли лучшие варианты?

Нет ничего плохого в этом.

Однако, опять же, этот вопрос не имеет смысла за пределами более крупного изображения. Это похоже на запрос веб-дизайнера, если использовать всплывающее окно «таким образом, это хорошая идея» - на это можно ответить только в контексте общего внешнего вида и пользовательского опыта сайта. Итак, следует ли использовать AlertDialog или какую-то всплывающую панель или какую-то анимированную панель слайда или полностью отдельную активность или , независимо от того, как - вопрос о том, как вы хотите, чтобы ваше приложение выглядело.

+0

Я полностью понимаю комментарии в вашем ответе. К сожалению, на данный момент я не знаю достаточно о разработке Android, чтобы задать «правильные» вопросы. В качестве учебного упражнения я пытаюсь создать приложение, которое позволяет пользователю указывать точки на карте и выбирать, какие службы отключить в этом месте. – ahsteele

 Смежные вопросы

  • Нет связанных вопросов^_^