【问题标题】:How to write a better switch-case statement?如何编写更好的 switch-case 语句?
【发布时间】:2018-08-22 16:14:53
【问题描述】:

我是安卓新手。我试图从另一个activity 获取listView 值,并根据该值显示特定的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;
  }

【问题讨论】:

  • 你有 3 个 switch 语句而不是 2 个。你的问题到底是什么?
  • 每次我添加另一个语句时,它们都堆叠在一起。就像当 case 0 只有 switch(value1) 时,向我显示了我想要的位置。但是当我为 case 0 添加 switch(value2) 时,它向我显示了它们的结果,对于 case 0 的 switch(value3) 也是如此,它向我显示了 switch(value1)-case0 的结果,switch( value2)-case0 ,switch(value3)-case0。我希望我说清楚了。
  • 您可以使用mMap.clear()清除所有标记。

标签: android android-intent switch-statement


【解决方案1】:

看起来每次您通过开关盒时,您都在“添加”一个标记。 注意“添加”这个词。

在 switch case 语句之前,添加代码以删除所有现有标记。如果我正确理解您的问题,这就是您想要的行为。

【讨论】:

  • 这很简单。非常感谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 2020-10-24
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多