2016-08-29 6 views
0

私は3つのボタンがあり、私はマップ操作で作業しています。最初のボタンだけが応答し、次に2番目のボタンが時間順に応答します。私は、私は彼らの誰もがここで最初の起動時にonroidリスナーが応答するのは1人だけです

をクリックしたときにそれらが独立して対応したいので、私は、これらのボタンにマーカーを保存した。ここ

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 (),)); 
    } 
} 

私の.javaファイルである私の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

私は私がそれらをクリックするとマップの上に断片を開くことができます。この部分にはテキストが表示されます。このフラグメントをgooglemapの一部だけにオーバーレイして閉じることができます。私は既に、ワンクリックを開く「スニペット」にいくつかの基本情報を持っていますが、私が持っている情報をよりよく見たいと思っています。親切にお手伝いしてください – lloyd

0

他のonclicklisteners内でonclicklistenersを設定しています。あなたの実装では、button1がクリックされ、button2のonclicklistenerが設定され、button2がクリックされたとき(button1がクリックされた後)、button3のonclicklistnereが設定されます。 3つのonclicklistenersをoncreateの中に直接設定します。

関連する問題