0

如何将选项列表添加到官方 Android 文档的描述中,暗示使用“数据存储技术AlertDialog”之一来保存用户首选项。这些示例假设已在一个 类中产生。AlertDialogActivity

就我而言,我创建了一个扩展类ItemizedOverlay。此类重写该onTap方法并使用AlertDialog来提示用户进行多选选择。我想捕获并保留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;
}
4

2 回答 2

0

我想存储用户所做的每个选择以供以后使用。我怎么做?

好吧,在战术层面,onClick()您可以将数据写入 SQLite 数据库。

然而,感觉就像你把众所周知的马车放在同样众所周知的马之前。除非你真的打算对数据做点什么,否则不要用对话来纠缠用户。如果你知道你想对数据做什么,那么你想用它做什么似乎比它是一个AlertDialogItemizedOverlay.

以这种方式使用 AlertDialog 是个好主意吗?有更好的选择吗?

这显然没有什么问题。

然而,再一次,这个问题在大局之外毫无意义。这就像问网页设计师“以这种方式使用弹出窗口是否是个好主意”——这只能在网站的整体外观和用户体验的背景下才能真正得到回答。因此,您是否应该使用AlertDialog某种弹出式面板或某种动画滑入式面板或完全独立的活动或任何您希望应用程序外观的问题。

于 2010-06-07T21:11:03.613 回答
0

好吧,如果您只需要在内存中访问它,或者如果您需要更持久的存储,您可以为每个项目创建一个HashMap<OverLayItem, List<String>>HashMap<OverLayItem, List<Boolean>>存储设置,您可以使用首选项或数据库或其他方式,如您提供的链接中所述。然后你会更新 hashmaps 或你的数据库在 positive 中onClick()

于 2010-06-08T00:11:01.267 回答