0

オプションのリストAlertDialogをAndroid の公式ドキュメントに追加する方法の説明では、「データ ストレージ技術」の 1 つを使用してユーザー設定を保存することをほのめかしています。例では、 がクラスAlertDialog内で生成されている ことを前提としています。Activity

私の場合、拡張するクラスを作成しました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

メモリにアクセスする必要がある場合は、各項目の設定を保存するHashMap<OverLayItem, List<String>>HashMap<OverLayItem, List<Boolean>>、より永続的な保存が必要な場合は、設定、データベース、または提供したリンクで説明されている他の手段を使用できます。次に、ハッシュマップまたはデータベースをポジティブに更新しますonClick()

于 2010-06-08T00:11:01.267 に答える
0

後で使用するために、ユーザーが行った各選択を保存したいと思います。それ、どうやったら出来るの?

戦術レベルではonClick()、データを SQLite データベースに書き込むことができます。

ただし、同じようにことわざの馬の前に、ことわざのカートを置いているように感じます. 実際にデータを使って何かをする予定がない限り、ダイアログでユーザーを怒らせないでください。データで何をしたいのかがわかっている場合、データで何をしたいのかは、AlertDialogによって発生したItemizedOverlay.

この方法で AlertDialog を使用することは良い考えですか? より良いオプションはありますか?

明らかに問題はありません。

しかし、繰り返しになりますが、この質問は全体像の外では意味がありません。これは、Web デザイナーにポップアップ ウィンドウを「このように使用するのは良いアイデアか」と尋ねるようなものです。これは、サイトの全体的なルック アンド フィールとユーザー エクスペリエンスのコンテキストでのみ、実際に回答することができます。したがってAlertDialog、ポップアップ パネルまたは何らかのアニメーション スライドイン パネルを使用するか、完全に独立したアクティビティを使用するか、またはアプリをどのように表示するかが問題になります。

于 2010-06-07T21:11:03.613 に答える