如何将editext链接到Google地图中的按钮

时间:2015-08-21 07:38:18

标签: android

这是我的java文件。代码是简单的谷歌地图,我想将名称传递给按钮,应该在地图上搜索。但我的价值是没有传递给按钮。获取错误在谷歌地图代码中出现空指针异常,同时将editext值传递给buttton。我无法理解编码中出现的问题。我是否错误地在标记中添加了tittle值或者给出了错误的editext值任何人都可以建议如何在标记或按钮中将editext值传递给我的tittle。

package com.example.test2;


import com.google.android.gms.drive.internal.f;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {


    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1=(Button)findViewById(R.id.google_map);

        final EditText edt_text=(EditText)findViewById(R.id.edt1);

       // setText();

        btn1.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                GoogleMap map;


                    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
                    map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

                    LatLng latLng = new LatLng(13.05241, 80.25082);
                    map.addMarker(new MarkerOptions().position(latLng).title(edt_text.getText().toString()));

                }

        });



    }


    }    

logcat的:

08-21 03:24:08.340: E/AndroidRuntime(1241): FATAL EXCEPTION: main
08-21 03:24:08.340: E/AndroidRuntime(1241): java.lang.NullPointerException
08-21 03:24:08.340: E/AndroidRuntime(1241):     at com.example.test2.MainActivity$1.onClick(MainActivity.java:42)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.view.View.performClick(View.java:4240)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.view.View$PerformClick.run(View.java:17721)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.os.Handler.handleCallback(Handler.java:730)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.os.Looper.loop(Looper.java:137)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at android.app.ActivityThread.main(ActivityThread.java:5103)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at java.lang.reflect.Method.invokeNative(Native Method)
08-21 03:24:08.340: E/AndroidRuntime(1241):     at java.lang.reflect.Method.invoke(Method.java:525)

2 个答案:

答案 0 :(得分:1)

检查Google Maps Documentation

您的活动必须实施OnMapReadyCallback界面。地图准备就绪后,添加onClickListener

Y会说您的代码失败了,因为当您致电getMap()时,地图尚未加载

答案 1 :(得分:0)

btn1.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            GoogleMap map;


                map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
                map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

                LatLng latLng = new LatLng(13.05241, 80.25082);
        if(!(edt_text.getText().toString().trim().equals("")) 
                map.addMarker(new MarkerOptions().position(latLng).title(edt_text.getText().toString()));

            }

    });