2012-02-03 3 views
0

정확한 설명을 모르지만 상황은 다음과 같습니다. 내 애플리케이션에 사용자가 Google지도에 표시 할 도시를 선택할 수있는 옵션을 제공합니다. 4 가지 옵션이 있으며 사용자가 그 중 2 가지를 클릭합니다. 이것은 내 수신기 방법입니다.활동 데이터 정리

public void onClick(View v) { 
     CheckBox option; 
     int id = 1; 
     while ((option = (CheckBox) thisActivity.findViewById(id)) != null) { 
      if (option.isChecked()) { 
       selected = selected + option.getText().toString() + ";"; 
      } 
      id++; 
     } 
     Intent newintent = new Intent(thisActivity, ShowInMap.class); 
     newintent.putExtra("SelectedCity", selected); 
     // newintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
     thisActivity.startActivity(newintent); 
    } 

나는 성공적으로지도에 두 일부 도시를 표시 할 수 있지만, 나는이 시간 뒤로 키를 선택 한 또 다른 도시를 공격 할 때, 표시 된 도시는 이전의지도에 여전히 있었다 플러스 내가이 선택하신 시간과 나의 로그는 실제로 그 3 개의 도시가지도 API에 보내어 졌다고 말한다. 그래서 내 질문에, 그 두 선택된 도시를 청소하고 새로운 선택을 할 수있는 방법이있다. 즉 두 번째로 선택한 도시 만지도 상에 있습니다. 미리 감사드립니다.

답변

0

변수 selected이 전역으로 표시되므로 도시를 선택하는 첫 번째 활동으로 돌아 오면 새로운 선택된 도시가 이전 selected 문자열에 추가됩니다.

새로운 선택을 시작할 때마다 selected 문자열을 먼저 지울 것을 제안합니다.

public void onClick(View v) { 
     selected="";//clear it 
     CheckBox option; 
     int id = 1; 
     while ((option = (CheckBox) thisActivity.findViewById(id)) != null) { 
      if (option.isChecked()) { 
       selected = selected + option.getText().toString() + ";"; 
      } 
      id++; 
     } 
     Intent newintent = new Intent(thisActivity, ShowInMap.class); 
     newintent.putExtra("SelectedCity", selected); 
     // newintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
     thisActivity.startActivity(newintent); 
    } 
+0

좋은 지적입니다. 나중에 설명 드리겠습니다. 고맙습니다 –

+0

매력처럼 작동합니다. 고맙습니다! –

+0

@ClintHui 작품을 보니 다행. 천만에요! – Huang