2016-08-29 5 views
0

У меня есть 3 кнопки, и я работаю в mapsactivity. Отзывается только первая кнопка, затем вторая, хронологически. Я хранить маркеры в этих кнопок, поэтому я хочу, чтобы ответить самостоятельно, когда я нажимаю на любой из нихТолько один прослушиватель onClick отвечает на начальную студию андроидного андроида

Вот мой .java файл

import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    final Button button1 = (Button) findViewById(R.id.buttonMaps); 
    final Button button2 = (Button)findViewById(R.id.buttonMaps2); 
    final Button button3 = (Button)findViewById(R.id.buttonMaps3); 

    @Override 
    protected void onCreate(Bundle savedinstancestate) { 
     super.onCreate(savedinstancestate); 
     setContentView(R.layout.activity_maps); 

     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       mMap.clear(); 
       if (button1.isShown()) { 

        mMap.addMarker(new MarkerOptions().position(new LatLng(,)).title("").snippet("My Location").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher))); 

        button2.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 

          mMap.clear(); 
          if (button2.isShown()) { 

           mMap.addMarker(new MarkerOptions().position(new LatLng()).title("").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_hospital))); 
                   mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(),)); 

           button3.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 

             mMap.clear(); 
             if (button3.isShown()) { 

              mMap.addMarker(new MarkerOptions().position(new LatLng(`enter code here`)).title(" ").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_busstop))); 
                   mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(),)); 

             } 

            } 

           }); 
          } 
         } 
        }); 
       } 
      } 
     }); 
    } 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

/** 
* Manipulates the map once available. 
* This callback is triggered when the map is ready to be used. 
* This is where we can add markers or lines, add listeners or move the camera. In this case, 
* we just add a marker near Sydney, Australia. 
* If Google Play services is not installed on the device, the user will be prompted to install 
* it inside the SupportMapFragment. This method will only be triggered once the user has 
* installed Google Play services and returned to the app. 
*/ 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng (),)); 
    } 
} 

Вот мой activity_maps.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MapsActivity"> 

     <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:map="http://schemas.android.com/apk/res-auto" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context=".MapsActivity" 
      tools:layout="@android:layout/simple_spinner_dropdown_item" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="text1" 
      android:padding="8dp" 
      android:background="#53fed0" 
      android:id="@+id/buttonMaps" 
      android:layout_marginLeft="90dp" 
      android:layout_marginStart="90dp" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="text2" 
      android:id="@+id/buttonMaps2" 
      android:layout_marginTop="35dp" 
      android:layout_below="@+id/buttonMaps" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:clickable="true" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Bus Stops" 
      android:id="@+id/buttonMaps3" 
      android:layout_below="@+id/buttonMaps2" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:layout_marginTop="35dp" 
      android:clickable="true"/> 
</RelativeLayout> 
+0

Мне интересно, почему любая кнопка отвечает. Вы инициализируете свои кнопки перед 'setContentView', это должно быть сделано ПОСЛЕ. И если вы хотите, чтобы каждая кнопка реагировала отдельно, просто установите каждый 'setOnClickListener' за пределами другого' setOnClickListener'. Вы сделали то, что кнопка 2 настроена на прослушивание кликов, нажав кнопку 1. И кнопка 3 настроена на нажатие кнопки прослушивания нажатием на кнопку 2. – Opiatefuchs

+0

Какова точка установки onClickListener внутри другого onClickListener? –

ответ

0

Вы определяете кнопку 2-3 нажимаете только при нажатии кнопки 1. необходимо идентифицировать отдельно.

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mMap.clear(); 
      if (button1.isShown()) { 
       mMap.addMarker(new MarkerOptions().position(new LatLng(,)).title("").snippet("My Location").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher))); 

      } 
     } 
    }); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mMap.clear(); 
      if (button2.isShown()) { 
       mMap.addMarker(new MarkerOptions().position(new LatLng()).title("").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_hospital))); 
       mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(),)); 


      } 
     } 
    }); 

    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mMap.clear(); 
      if (button3.isShown()) { 
       mMap.addMarker(new MarkerOptions().position(new LatLng(`enter code here`)).title(" ").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_busstop))); 
       mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(),)); 
      } 
     } 
    }); 
+0

Спасибо большое. Теперь он работает – lloyd

+0

Я хочу, чтобы мой маркер открыл фрагмент поверх карты, когда я нажимаю на них. Этот фрагмент отобразит текст. Я хочу, чтобы этот фрагмент перекрывал только часть карты google и был закрыт. У меня уже есть базовая информация в «фрагменте», которая открывается одним щелчком мыши, но я хочу лучше просмотреть информацию, которую у меня есть. Пожалуйста, помогите – lloyd

0

Вы устанавливаете onclicklisteners внутри других onclicklisteners. в вашей реализации, когда нажата кнопка1, установлен onclicklistener для кнопки2, и когда нажата кнопка 2 (после нажатия кнопки1), устанавливается onclicklistnere для кнопки3. установите все 3 onclicklisteners непосредственно внутри oncreate.

 Смежные вопросы

  • Нет связанных вопросов^_^