2015-09-15 4 views
1

Я пытаюсь использовать Google SignIn в приложении, которое я создаю. Я использую обучающие программы для разработчиков Google, но я получаю сообщение об ошибке «„HomeActivity“класс должен быть либо объявлен как абстрактный или реализуют абстрактный метод„onConnected (Bundle)“в„ConnectionCallbacks“выделены в:Устранение неполадок GoogleApiClient

public class HomeActivity extends Activity implements 
     ConnectionCallbacks, 
     OnConnectionFailedListener, 
     OnClickListener 

Здесь мой HomeActivity код, большая часть которого я от Google:

import android.app.Activity; 
import android.content.IntentSender; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 


import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.Scopes; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.google.android.gms.common.api.Scope; 
import com.google.android.gms.plus.Plus; 
import static android.view.View.*; 


public class HomeActivity extends Activity implements 
     ConnectionCallbacks, 
     OnConnectionFailedListener, 
     OnClickListener { 

    private static final int RC_SIGN_IN = 0; 
    private GoogleApiClient mGoogleApiClient; 
    private Button mLoginButton; 
    private TextView mSignUpLabel; 

    /* Is there a ConnectionResult resolution in progress? */ 
    private boolean mIsResolving = false; 

    /* Should we automatically resolve ConnectionResults when possible? */ 
    private boolean mShouldResolve = false; 


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

     mLoginButton = (Button) findViewById(R.id.btnLogin); 
     mLoginButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(HomeActivity.this, "Button Pressed", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     mSignUpLabel = (TextView) findViewById(R.id.lblAboutUs); 
     mSignUpLabel.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(HomeActivity.this, "WAY TO SIGN UP MAN", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     findViewById(R.id.sign_in_button).setOnClickListener(this); 

     // Build GoogleApiClient with access to basic profile 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(Plus.API) 
       .addScope(new Scope(Scopes.PROFILE)) 
       .build(); 
    } 

    @Override 
    public void onConnectionSuspended(int arg0) { 

     // what should i do here ? should i call mGoogleApiClient.connect() again ? ? 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_home, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     // Could not connect to Google Play Services. The user needs to select an account, 
     // grant permissions or resolve an error in order to sign in. Refer to the javadoc for 
     // ConnectionResult to see possible error codes. 
     Log.d(TAG, "onConnectionFailed:" + connectionResult); 

     if (!mIsResolving && mShouldResolve) { 
      if (connectionResult.hasResolution()) { 
       try { 
        connectionResult.startResolutionForResult(this, RC_SIGN_IN); 
        mIsResolving = true; 
       } catch (IntentSender.SendIntentException e) { 
        Log.e(TAG, "Could not resolve ConnectionResult.", e); 
        mIsResolving = false; 
        mGoogleApiClient.connect(); 
       } 
      } else { 
       // Could not resolve the connection result, show the user an 
       // error dialog. 
       showErrorDialog(connectionResult); 
      } 
     } else { 
      // Show the signed-out UI 
      showSignedOutUI(); 
     } 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     mGoogleApiClient.disconnect(); 
    } 
} 

Любая помощь будет высоко ценится !!!

ответ

1

Ваш класс объявляет, что он будет осуществлять ConnectionCallbacks что означает, что обязательно, чтобы вы определили все методы i ncluded в этом интерфейсе (и всех других интерфейсах, которые вы хотите реализовать). Оба

Android-студия (Нажмите на лампочке в левой endge) и Eclipse, должна способность автоматически осуществлять uninmplemented методы (вы, конечно, должны заполнить их с любым пользовательским кодом)

+0

Wow Я полностью знал это тоже. Спасибо огромное! Это была большая помощь! – zahudson95

Смежные вопросы