Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何把谷歌地图放在标签上?_Android_Google Maps_Android Fragments - Fatal编程技术网

Android 如何把谷歌地图放在标签上?

Android 如何把谷歌地图放在标签上?,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,我已经用两个选项卡创建了主活动,并且我正在尝试在第一个选项卡片段上实现映射。应用程序显示默认地图,市场为(0,0),但当我单击按钮从文本框中查找新位置时,它崩溃OneFragment java代码: public class OneFragment extends Fragment implements OnMapReadyCallback, View.OnClickListener{ // implements OnMapReadyCallback, View.OnClickListener

我已经用两个选项卡创建了主活动,并且我正在尝试在第一个选项卡片段上实现映射。应用程序显示默认地图,市场为(0,0),但当我单击按钮从文本框中查找新位置时,它崩溃OneFragment java代码:

public class OneFragment extends Fragment implements OnMapReadyCallback, View.OnClickListener{ // implements OnMapReadyCallback, View.OnClickListener

private GoogleMap mMap;
private EditText mOriginPlace;
private Button mSearchOriginButton;
private View mView;


    public OneFragment() {
        // Required empty public constructor
    }


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public void onMapReady(GoogleMap googleMap) { //when map service started
    mMap = googleMap;
    LatLng hcmus = new LatLng(10.762963, 106.682394); //create position with latitude and longitude
    mMap.addMarker(new MarkerOptions()
            .position(hcmus)
            .title("Title"));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(hcmus, 10));
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    setUpMapIfNeeded();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_one, container, false);

    mSearchOriginButton = (Button) mView.findViewById(R.id.searchOriginButton);
    mSearchOriginButton.setOnClickListener(this);
    return mView;
}

@Override
public void onClick(View v) {
    mOriginPlace = (EditText) mView.findViewById(R.id.originPlaceText);
    String placeOriginText = mOriginPlace.getText().toString();
    List<Address> addressList = null;
    if (placeOriginText != null || !placeOriginText.equals("")) {
    Geocoder geocoder = new Geocoder(getActivity());
    try {
        addressList = geocoder.getFromLocationName(placeOriginText, 1);
    } catch (IOException e) {
        e.printStackTrace();
    }
    if(addressList.size() > 0) {
        Address address = addressList.get(0);
        LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
        mMap.addMarker(new MarkerOptions()
                .position(latLng)
                .title("Marker"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
    }
    } else {
        Toast.makeText(getActivity(), "Please enter origin address!", Toast.LENGTH_SHORT).show();
    }
}

public void setUpMapIfNeeded() {
    if (mMap == null) {
        SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
                .findFragmentById(R.id.originPlaceMap);
        mapFragment.getMapAsync(this); //it'll start map service, getMapAsync(), чтобы установить обратный вызов для фрагмента
    }
}

由于您没有添加崩溃日志,因此很难给出问题的解决方案。您可以确保更新地图视图是否发生在主UI线程上(使用主循环器)。取决于屏幕导航的方式有时getActivity将为null,请确保也为null。如果您添加崩溃日志,我可以帮助您获得更多信息。Address有时间从geocoder接收结果,因此请尝试将整个onclick方法置于try catch块下。

显示崩溃错误?当应用程序崩溃时,您必须发布logcat输出。根据日志,可以进行进一步调查我添加了logcat Output一个问题,,,你看到屏幕上的地图了吗?是的,它显示为我所说的添加了logcat Output你可以在从地址列表检索对象之前添加检查吗。如果(addessList.size>0){然后执行您的工作}Thx,现在它不会崩溃。这意味着geocder无法从EditText获取地址,你能帮个忙吗?我相信你的编辑文本在片段中。如果是这样,请将View设置为全局变量,并使用View.findviewById()初始化编辑文本;并让我知道结果,希望它应该工作,直到不工作,我更新片段代码(如上所述)
    04-20 18:44:11.154 6485-6485/com.itshareplus.googlemapdemo E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.itshareplus.googlemapdemo, PID: 6485
                                                                         java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
                                                                             at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                                             at java.util.ArrayList.get(ArrayList.java:308)
                                                                             at fragments.OneFragment.onClick(OneFragment.java:94)
                                                                             at android.view.View.performClick(View.java:4909)
                                                                             at android.view.View$PerformClick.run(View.java:20390)
                                                                             at android.os.Handler.handleCallback(Handler.java:815)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                             at android.os.Looper.loop(Looper.java:194)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5848)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
04-20 18:44:11.328 6485-6485/com.itshareplus.googlemapdemo I/Process: Sending signal. PID: 6485 SIG: 9