我正在尝试将Google Places API实施到我的应用中,而我目前在尝试运行该应用时遇到了错误日志。
Error:(23, 28) error: no suitable constructor found for Builder(menu_1_fragment)
constructor Builder.Builder(Context,ConnectionCallbacks,OnConnectionFailedListener) is not applicable
(actual and formal argument lists differ in length)
constructor Builder.Builder(Context) is not applicable
(actual argument menu_1_fragment cannot be converted to Context by method invocation conversion)
现在,我正在尝试将Google地图实施为我创建的将显示我的应用的片段。我还想要包含场所API,我是否需要为谷歌地图创建一个单独的类,或者我可以将此代码包含在我目前正在进行的片段类中吗?
public class menu_1_fragment extends Fragment {
MapView mapView;
GoogleMap map;
private GoogleApiClient mGoogleApiClient;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.menu1_layout, container, false);
//--Snippet
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this, 0, this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
return v;
}
@Override
public void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();
}
@Override
public void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
}
错误发生在.Builder(this)
编辑:修改代码
`package com.examples.blahblah.blahblah;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.places.Places;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
public class menu_1_fragment extends Fragment implements GoogleApiClient.OnConnectionFailedListener {
MapView mapView;
GoogleMap map;
private Context mContext;
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
mContext = activity;
}
private GoogleApiClient mGoogleApiClient;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.menu1_layout, container, false);
//--Snippet
mGoogleApiClient = new GoogleApiClient
.Builder(mContext )
.enableAutoManage(this, 0, this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
return v;
}
@Override
public void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();
}
@Override
public void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
}
`
现在正在
上发生新错误 .enableAutoManage(this, 0, this)
并告诉我它错误的第一个参数类型?
答案 0 :(得分:3)
您需要activity
context
。所以试试这个。
。
private Context mContext
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
mContext = activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.menu1_layout, container, false);
//--Snippet
mGoogleApiClient = new GoogleApiClient
.Builder(mContext )
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
return v;
}
跳它会帮助你。
更新:
我已删除.enableAutoManage(this,0,this);
有关详情,请访问here
答案 1 :(得分:2)
您的Fragment
未实现所需的界面。使用this
作为第三个参数,您声明您的Fragment
是方法本身所需的类的对象。构建器还期望Context
对象作为第一个参数而不是Fragment
的实例,您可以使用getActivity()