Android 在片段中集成google plus api时出现ClassCastException

Android 在片段中集成google plus api时出现ClassCastException,android,android-fragments,google-plus,Android,Android Fragments,Google Plus,我遵循developer.google.com中提到的所有步骤在我的应用程序中实现googleplus api 我在片段中集成了googleplus api,运行代码时得到一个ClassCastException。 我的片段类: import com.digiapes.apeonomy.animation.Positions; import com.example.apeonomy.R; import com.google.android.gms.common.Connecti

我遵循developer.google.com中提到的所有步骤在我的应用程序中实现googleplus api

我在片段中集成了googleplus api,运行代码时得到一个ClassCastException。 我的片段类:

 import com.digiapes.apeonomy.animation.Positions;
    import com.example.apeonomy.R;
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GooglePlayServicesUtil;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
    import com.google.android.gms.plus.Plus;
   import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;


    public class Login extends Fragment implements OnGlobalLayoutListener,
            OnClickListener, GoogleApiClient.ConnectionCallbacks,
            GoogleApiClient.OnConnectionFailedListener {
        EditText UN, Pass;
        View loginimage, loginusing, loginlayout;
        ImageButton flogin, Glogin;
        Button login1;
        float f;
        Positions pos = new Positions();
        String name = "Harsha";
        String pass = "hahaha";
        private static final int RC_SIGNIN = 0;
        private static boolean mSignInClicked;
        private GoogleApiClient mGoogleApiClient;
        private boolean mIntentInProgress;
        private boolean mSignedIn;
        private ConnectionResult mConnectionResult;
        private Activity c;
        private boolean mSignedInClicked;

        // Login_Register Lg=new Login_Register();
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View login = inflater.inflate(R.layout.login, container, false);
            // TODO Auto-generated method stub
            UN = (EditText) login.findViewById(R.id.UsernameL);
            Pass = (EditText) login.findViewById(R.id.PassswordL);
            loginimage = login.findViewById(R.id.LoginImage);
            login1 = (Button) login.findViewById(R.id.Login);
            loginusing = login.findViewById(R.id.loginusing);
            loginlayout = login.findViewById(R.id.LoginLayout);
            f = ((Login_Register) getActivity()).pos.getLIpos();
            loginimage.getViewTreeObserver().addOnGlobalLayoutListener(this);
            UN.getBackground().setAlpha(50);
            Pass.getBackground().setAlpha(50);
            ObjectAnimator.ofFloat(loginusing, View.ALPHA, 0, 1).setDuration(1000)
                    .start();
            ObjectAnimator.ofFloat(loginlayout, View.ALPHA, 0, 1).setDuration(1000)
                    .start();
            login.findViewById(R.id.googlepluslog).setOnClickListener(this);
            login.findViewById(R.id.facebooklog).setOnClickListener(this);

            return login;
        }

        @Override
        public void onGlobalLayout() {
            pos.setLIpos(loginimage.getY());
            // TODO Auto-generated method stub

        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onActivityCreated(savedInstanceState);
            ObjectAnimator
                    .ofFloat(loginimage, View.TRANSLATION_Y,
                            f - loginimage.getY() - 130, 0).setDuration(300)
                    .start();
            login1.setOnClickListener(this);

        }
        @Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .addConnectionCallbacks((ConnectionCallbacks) getActivity().getApplicationContext())
            .addOnConnectionFailedListener(this).addApi(Plus.API, null)
            .addScope(Plus.SCOPE_PLUS_LOGIN).build();

        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.Login:
                if (UN.getText().length() == 0 || Pass.getText().length() == 0) {
                    Toast.makeText(getActivity(),
                            "Please enter valid Username and Password",
                            Toast.LENGTH_SHORT).show();
                } else if (UN.getText().toString().equals(name)
                        && Pass.getText().toString().equals(pass)) {

                    Intent intent = new Intent(getActivity()
                            .getApplicationContext(), Main.class);
                    startActivity(intent);
                }
            break;
        case R.id.facebooklog:

            break;
        case R.id.googlepluslog:
            signInWithGplus();
            break;

        }

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if (requestCode == RC_SIGNIN) {
            mIntentInProgress = false;

            if (!mGoogleApiClient.isConnecting()) {
                mGoogleApiClient.connect();
            }
        }
    }
    private void signInWithGplus() {
        // TODO Auto-generated method stub
        if (!mGoogleApiClient.isConnecting()) {
            mSignedIn = true;
            resolveSignInerror();
        }

    }
    private void resolveSignInerror() {
        // TODO Auto-generated method stub
        if (mConnectionResult.hasResolution()) {
            try {
                mIntentInProgress = true;
                mConnectionResult.startResolutionForResult(c, RC_SIGNIN);
            } catch (SendIntentException e) {
                mIntentInProgress = false;
                mGoogleApiClient.connect();
            }
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        // TODO Auto-generated method stub
        if (!result.hasResolution()) {
            GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), c, 0)
                    .show();
            return;
        }
        if(!mIntentInProgress){
            mConnectionResult=result;
            if(mSignedInClicked)
                resolveSignInerror();
        }
    }

    @Override
    public void onConnected(Bundle arg0) {
        mSignedInClicked=false;
        Toast.makeText(c, "Connected", Toast.LENGTH_SHORT).show();
        // TODO Auto-generated method stub

    }

    @Override
    public void onConnectionSuspended(int arg0) {
        // TODO Auto-generated method stub
        mGoogleApiClient.connect();

    }
    @Override
    public void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        mGoogleApiClient.connect();
    }
    @Override
    public void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        if (mGoogleApiClient.isConnected()) {
            mGoogleApiClient.disconnect();
        }
    }
}
获取此行的错误信息:

mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .addConnectionCallbacks((ConnectionCallbacks) getActivity().getApplicationContext())
            .addOnConnectionFailedListener(this).addApi(Plus.API, null)
            .addScope(Plus.SCOPE_PLUS_LOGIN).build();
日志:

中给出的解决方案不适合我

.addConnectionCallbacks((ConnectionCallbacks) getActivity().getApplicationContext())

这是错误的,该方法接受了一个实现了
GoogleAppClient.ConnectionCallbacks
,使用
片段
而不是
getActivity().getApplicationContext()

更改为mgoogleAppClient=new GoogleAppClient.Builder(getActivity()).addConnectionCallbacks(此).addOnConnectionFailedListener(this).addApi(Plus.API,null).addScope(Plus.SCOPE\u Plus\u LOGIN).build();这没有解决问题。是的,我做了你提到的事情,结果成功了,而且我还必须在.addApi(Plus.API,null)中删除null…现在我得到了一个对话框来添加/选择/添加帐户,但我的应用程序关闭了。我的建议是尝试调查这个问题,如果找不到解决方案,就创建一个新问题。您的新错误可能与其他完全相关,因为您正在获得登录对话框…很高兴我能提供帮助,祝您在应用程序开发的其余部分好运;)