Fragment error: Error: (55, 85) error: incompatible types: FragmentCu can not be converted to FragmentActivity

0

I have a problem with a fragment showing me this error:

  

Wrong 1st argument type. Found:   'com.bicicletas.Fragments.FragmentCuenta', required:   'android.support.v4.app.FragmentActivity'

In this line I marked the error in the first this before it was after the builder and I put a getActivity() :

googleApiClient=new GoogleApiClient.Builder(getActivity()).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,gso).build();

I do not know how I could solve this is my code:

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bicicletas.appbicicleta.R;
import com.bicicletas.appbicicleta.Registro_e_Inicio.MainActivity;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.OptionalPendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Status;

public class FragmentCuenta extends Fragment implements GoogleApiClient.OnConnectionFailedListener {

    private TextView nombreUsuario;
    private GoogleApiClient googleApiClient;


    public FragmentCuenta() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view=inflater.inflate(R.layout.fragment_cuenta, container, false);

        nombreUsuario=(TextView)getView().findViewById(R.id.nombre);

        return view;
        GoogleSignInOptions gso=new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();

        googleApiClient=new GoogleApiClient.Builder(getActivity()).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,gso).build();    
    }

    @Override
    public void onStart() {
        super.onStart();
        OptionalPendingResult<GoogleSignInResult>opr=Auth.GoogleSignInApi.silentSignIn(googleApiClient);
        if (opr.isDone()){

            GoogleSignInResult result =opr.get();
            handleSignInResult(result);
        }
        else {
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(@NonNull GoogleSignInResult googleSignInResult) {
                    handleSignInResult(googleSignInResult);
                }
            });

                }
        }


    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()){

            GoogleSignInAccount account= result.getSignInAccount();
            nombreUsuario.setText(account.getDisplayName());
        }
        else {

            regresarlogin();


        }
    }

    public void logOut(View view){
        Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
            @Override
            public void onResult(@NonNull Status status) {
                if (status.isSuccess()){

                    regresarlogin();
                }
                else {

                }
            }
        });
    }

    private void regresarlogin() {
        Intent intent=new Intent(getActivity(), MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

    }

    @Override
    public void onStop() {
        super.onStop();
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    }
}
    
asked by Carlos Mario 07.06.2017 в 19:37
source

1 answer

0

The enableAutoManage () method also needs the context as the first parameter, review the example in < a href="https://developers.google.com/android/guides/api-client"> documentation :

GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
    .enableAutoManage(this /* FragmentActivity */,
                      this /* OnConnectionFailedListener */)
    .addApi(Drive.API)
    .addScope(Drive.SCOPE_FILE)
    .build();

In this case if you are within a Fragment , get the context of the Activity that contains the Fragment by getActivity() , so add it:

  googleApiClient=new GoogleApiClient.Builder(getActivity()).enableAutoManage(getActivity(), this).addApi(Auth.GOOGLE_SIGN_IN_API,gso).build(); 
    
answered by 07.06.2017 / 21:36
source