我正在完成这些教程:
我想我被困在哪里就是上一页中“在清单文件中声明库组件”。
我猜这意味着图书馆没有正确导入,或者我没有声明某些内容。事实上,我打赌这是我的错,我可能需要在清单文件中声明一些东西。然而,我所有关于“声明活动googleplayservices manifest”的谷歌搜索让我相信可能没有什么可以为这个库声明 - 否则我肯定会遇到一些例子?
已安装Google Play服务 Google apis已安装 没有安装更新,因此不能有任何过时的事情。
我已导入库(右键单击我的项目>属性> android>添加>播放服务库)。
尝试使用'is library'复选框,无论是勾选还是未勾选都无济于事。
我已经安装并使用了该项目>多次清洁功能
Eclipse / ADT已多次重启
Description Resource Path Location Type
GooglePlayServicesClient cannot be resolved to a type MainActivity.java /Atapp/src/com/atdev/atapp line 21 Java Problem
Description Resource Path Location Type
mLocationClient cannot be resolved MainActivity.java /Atapp/src/com/atdev/atapp line 184 Java Problem
Description Resource Path Location Type
Syntax error on token "mCurrentLocation", VariableDeclaratorId expected after this token MainActivity.java /Atapp/src/com/atdev/atapp line 162 Java Problem
Description Resource Path Location Type
The method onConnectionFailed(ConnectionResult) of type MainActivity must override or implement a supertype method MainActivity.java /Atapp/src/com/atdev/atapp line 126 Java Problem
(其中包括)。
感谢您的建议。第一篇文章,所以我希望我已经正确地提出并明确了。
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.atdev.atapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.atdev.atapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.atdev.atapp.Venue"
android:label="@string/title_activity_venue"
android:parentActivityName="com.atdev.atapp.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.atdev.atapp.MainActivity" />
</activity>
</application>
</manifest>
主要活动java:
package com.atdev.atapp;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.IntentSender;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationClient;
public class MainActivity extends Activity implements
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener {
// ************************************************************************
// GLOBAL CONSTANTS
// Define a request code to send to Google Play services. This code is returned in Activity.onActivityResult
private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
// Set the contents of the venue search field to this string
public final static String VENUE_SEARCH = "com.atroom.atroom.MESSAGE";
// Global variable to hold the current location
Location mCurrentLocation;
// Define a DialogFragment that displays the google play services error dialog
public static class ErrorDialogFragment extends DialogFragment {
// Global field to contain the error dialog
private Dialog mDialog;
// Default constructor. Sets the dialog field to null
public ErrorDialogFragment() {
super();
mDialog = null;
}
// Set the dialog to display
public void setDialog(Dialog dialog) {
mDialog = dialog;
}
// Return a Dialog to the DialogFragment.
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return mDialog;
}
}
// ********************************************************************************
// GOOGLE PLAY SERVICES METHODS
// Handle results returned to the FragmentActivity by Google Play services
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Decide what to do based on the original request code
switch (requestCode) {
case CONNECTION_FAILURE_RESOLUTION_REQUEST :
// If the result code is Activity.RESULT_OK, try to connect again
switch (resultCode) {
case Activity.RESULT_OK :
// Try the request again
break;
}
}
}
// Do the following to test whether Google Play Services are available and take relevant action
private boolean servicesConnected() {
// Check that Google Play services is available
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
// If Google Play services is available
if (ConnectionResult.SUCCESS == resultCode) {
// In debug mode, log the status
Log.d("Location Updates","Google Play services is available.");
// Continue
return true;
// Google Play services was not available for some reason
} else {
// Get the error code
int errorCode = connectionResult.getErrorCode();
// Get the error dialog from Google Play services
Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(
errorCode,
this,
CONNECTION_FAILURE_RESOLUTION_REQUEST);
// If Google Play services can provide an error dialog
if (errorDialog != null) {
// Create a new DialogFragment for the error dialog
ErrorDialogFragment errorFragment =
new ErrorDialogFragment();
// Set the dialog in the DialogFragment
errorFragment.setDialog(errorDialog);
// Show the error dialog in the DialogFragment
errorFragment.show(getSupportFragmentManager(),
"Location Updates");
}
}
}
// Location Services calls the following on successful connection to client
@Override
public void onConnected(Bundle dataBundle) {
// Display the connection status
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
}
// Location Services calls the following if connection to the location client drops because of an error.
@Override
public void onDisconnected() {
// Display the connection status
Toast.makeText(this, "Disconnected. Please re-connect.",
Toast.LENGTH_SHORT).show();
}
// Location Services calls the following if the attempt to connect to Location Services fails
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
/*
* Google Play services can resolve some errors it detects.
* If the error has a resolution, try sending an Intent to
* start a Google Play services activity that can resolve
* error.
*/
if (connectionResult.hasResolution()) {
try {
// Start an Activity that tries to resolve the error
connectionResult.startResolutionForResult(
this,
CONNECTION_FAILURE_RESOLUTION_REQUEST);
/*
* Thrown if Google Play services canceled the original
* PendingIntent
*/
} catch (IntentSender.SendIntentException e) {
// Log the error
e.printStackTrace();
}
} else {
/*
* If no resolution is available, display a dialog to the
* user with the error.
*/
showErrorDialog(connectionResult.getErrorCode());
}
}
// *************************************************************************************
// LOCATION CONNECTION METHODS
// Set the current location to the last known location while a new location is being sought
mCurrentLocation = mLocationClient.getLastLocation();
// *************************************************************************************
// ACTIVITY METHODS
// Do the following when the activity is created
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create a new location client, using the enclosing class to handle callbacks
mLocationClient = new LocationClient(this, this, this);
}
// Do the following when the Activity becomes visible.
@Override
protected void onStart() {
super.onStart();
// Connect the client. This is in 'onStart' not 'onCreate' as we want to connect whenever
// the activity becomes visible, not just when the activity is started for the first time.
mLocationClient.connect();
}
// Do the following when the Activity is no longer visible.
@Override
protected void onStop() {
// Disconnecting the client invalidates it. This saves battery - we don't want the location
// to run in the background when the app/activity is not in use.
mLocationClient.disconnect();
super.onStop();
}
// Do the following when the menu is created
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// Do the following when the Venue Search button is clicked
public void sendVenueSearch (View view) {
Intent intent = new Intent(this, Venue.class);
EditText editText = (EditText) findViewById(R.id.venue_search);
String message = editText.getText().toString();
intent.putExtra(VENUE_SEARCH, message);
startActivity(intent);
}
}
主要活动xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/venue_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/button1"
android:ems="10"
android:hint="@+id/venue_search" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/venue_search"
android:layout_alignParentRight="true"
android:layout_marginBottom="34dp"
android:layout_marginRight="31dp"
android:onClick="sendVenueSearch"
android:text="@string/button_venue_search" />
<ListView
android:id="@+id/venueList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/venue_search"
android:layout_below="@+id/button1" >
</ListView>
</RelativeLayout>
答案 0 :(得分:6)
我在实施GooglePlayServicesClient.ConnectionCallbacks
方面遇到了同样的问题,因为它无法解决导入问题,只是删除GooglePlayServicesClient.
前缀并重新组织导入更正了它。
答案 1 :(得分:0)
只需将鼠标悬停在&#34; GooglePlayServicesClient.ConnectionCallbacks&#34;功能,
建议您喜欢&#34;导入GooglePlayServicesClient&#34;作为一个链接。只需点击它。
如果问题出现,您的错误现在就会消失。如果您没有导入该lib。
答案 2 :(得分:0)
此错误与您使用的Google Play服务库版本有关。
我遇到了同样的问题,我使用sdk管理器更新了播放服务库,然后将其导入工作区。
请注意,在构建项目时,您不应每次都构建库。在构建项目之前删除库文件中的刻度线。
从清单中我正在使用的版本是 安卓的versionCode = “4323030” android:versionName =“4.3.23(1069729-030)
这个版本在没有其他所有版本的情况下工作正常。