2010-06-07 2 views
0

AlertDialog에 대한 옵션 중 how to add a list에 대한 설명에서 공식 Android 설명서는 사용자 환경 설정을 "data storage techniques"중 하나와 함께 저장하는 것을 암시합니다. 이 예제에서는 AlertDialogActivity 클래스 내에서 생성 된 것으로 가정합니다.ItemizedOverlay onTap 메서드에서 생성 된 AlertDialog에서 선택된 옵션 유지 방법

제 경우에는 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 나는 나의 의향이 분명하게 희망적으로 수정되었다. 안드로이드 개발에 매우 ​​새로운 거대한 코드 블록에 대해 사과하고이 시점에서 무엇이 적절한 지 확신하지 못한다. : \ – ahsteele

+0

귀하의 질문에 대해 아직 명확하지 않습니다. 산문에는 의문의 여지가 없습니다. 코드가 컴파일되지 않습니까? 예외로 코드가 실패합니까? 그렇다면 스택 추적은 무엇입니까?뭔가 다른 점이 있습니까? – CommonsWare

답변

0

음, 메모리에 액세스해야하는 경우 각 항목의 설정을 저장하려면 HashMap<OverLayItem, List<String>> 또는 HashMap<OverLayItem, List<Boolean>>을 만들거나 설명 된대로 환경 설정이나 데이터베이스 또는 다른 방법을 사용할 수있는 영구 저장소가 더 필요한 경우 당신이 제공 한 링크에 그런 다음 해시 맵이나 데이터베이스를 양수로 업데이트하십시오 (onClick()).

0

나중에 사용할 수 있도록 사용자가 했다. 어떻게해야합니까 ?

음, 전술적 수준에서, 당신의 onClick()에, 당신은 SQLite 데이터베이스에 데이터를 쓸 수 있습니다.

그러나 똑같은 속담 앞에 속담을 쓰고있는 것처럼 느껴집니다. 실제로 데이터를 사용하여 작업을 수행 할 계획이 아니라면 대화를 통해 사용자를 오해하지 마십시오. 데이터로 무엇을하고 싶은지 알고 있다면, AlertDialogItemizedOverlay에 의해 제기 된 것보다 더 많이 저장 메커니즘을 지정하는 것으로 보입니다.

이런 식으로 AlertDialog를 사용하고 있습니까 좋은 생각이십니까? 더 나은 옵션이 있습니까?

분명히 잘못된 것은 없습니다.

그러나이 질문은 다시 큰 그림 외부에서는 의미가 없습니다. 웹 디자이너에게 "이 방법으로 좋은 생각입니다."라는 팝업 창이 사용되는지 묻는 것과 비슷합니다. 이것은 웹 사이트의 전반적인 모양과 느낌 및 사용자 경험이라는 맥락에서 실제로 응답 할 수 있습니다. 따라서 AlertDialog 또는 팝업 패널 또는 일종의 애니메이션 슬라이드 인 패널 또는 완전히 별개의 활동 인 이든간에이 앱을 어떻게 보일지에 대한 질문입니다.

+0

나는 당신의 대답에있는 의견을 완전히 이해한다. 불행히도,이 시점에서 나는 "올바른"질문을하기 위해 Android 개발에 대해 충분히 알지 못합니다. 학습 연습으로 사용자가지도에서 점을 지정하고 해당 위치에서 비활성화 할 서비스를 선택할 수있는 앱을 만들려고합니다. – ahsteele

관련 문제