如何编写更好的switch-case语句?

时间:2018-08-22 16:14:53

标签: android android-intent switch-statement

我是Android新手。我试图从另一个listView获取activity的值,并根据该值显示特定的location。在这种情况下,只有第一个switch-case可以正常工作,但是当我添加第二个switch-case时,它向我展示了第一个和第二个的结果。如何改进此代码,以使每个switch语句仅显示一个结果。

value1 = getIntent().getIntExtra("value1", 0);
value2 = getIntent().getIntExtra("value2", 0);
value3 = getIntent().getIntExtra("value3", 0);



@Override
public void onLocationChanged(Location location) {
  mLastLocation = location;
  if (mMarker != null)

   mMarker.remove();

  latitude = location.getLatitude();
  longitude = location.getLongitude();

  LatLng latLng = new LatLng(latitude, longitude);
  MarkerOptions markerOptions = new MarkerOptions()
   .position(latLng)
   .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
  mMarker = mMap.addMarker(markerOptions);



  mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
  mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 13));


  switch (value1) {

   case 0:
    mBaniaLuca = mMap.addMarker(new MarkerOptions()
     .position(BaniaLuca)
     .title("BaniaLuca"));
    mBaniaLuca.setTag(0);
    break;

   case 1:
    mBiedronka = mMap.addMarker(new MarkerOptions()
     .position(Biedronka)
     .title("Biedronka"));
    mBiedronka.setTag(0);
    break;

  }
  switch (value2) {
   case 0:
    mTARITA = mMap.addMarker(new MarkerOptions()
     .position(TARITA)
     .title("Tarita"));
    mTARITA.setTag(0);
    break;
  }
  switch (value3) {
   case 0:
    mCocon = mMap.addMarker(new MarkerOptions()
     .position(Cocon)
     .title("Cocon"));
    mCocon.setTag(0);
    break;
  }

1 个答案:

答案 0 :(得分:1)

就像每次您处理开关盒一样,您正在“添加”标记。 注意“添加”一词。

在切换用例之前,先声明,然后添加代码以删除所有现有标记。如果我正确理解您的问题,这就是您想要的行为。