android - Having Trouble moving Google sign-in button to fragment -
as of now, have google sign-in button in activity works fine. i'm trying move button new fragment while keeping of main code in activity possible. have absolutely no idea on how proceed.
this activity
package com.example.akhilsukh01.truckory; import android.content.intent; import android.support.annotation.nonnull; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.util.log; import android.view.view; import android.widget.toast; 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.signinbutton; import com.google.android.gms.common.api.googleapiclient; import com.google.android.gms.tasks.oncompletelistener; import com.google.android.gms.tasks.task; import com.google.firebase.auth.authcredential; import com.google.firebase.auth.authresult; import com.google.firebase.auth.firebaseauth; import com.google.firebase.auth.firebaseuser; import com.google.firebase.auth.googleauthprovider; public class loginactivity extends appcompatactivity { signinbutton button; firebaseauth mauth; private final static int rc_sign_in = 1; googleapiclient mgoogleapiclient; firebaseauth.authstatelistener mauthlistener; @override protected void onstart() { super.onstart(); mauth.addauthstatelistener(mauthlistener); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); button = (signinbutton) findviewbyid(r.id.googlebtn); mauth = firebaseauth.getinstance(); button.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { signin(); } }); mauthlistener = new firebaseauth.authstatelistener() { @override public void onauthstatechanged(@nonnull firebaseauth firebaseauth) { if(firebaseauth.getcurrentuser() != null){ startactivity(new intent(loginactivity.this, homeactivity.class)); } } }; googlesigninoptions gso = new googlesigninoptions.builder(googlesigninoptions.default_sign_in) .requestidtoken(getstring(r.string.default_web_client_id)) .requestemail() .build(); mgoogleapiclient = new googleapiclient.builder(this) .enableautomanage(this /* fragmentactivity */, new googleapiclient.onconnectionfailedlistener() { @override public void onconnectionfailed(@nonnull connectionresult connectionresult) { toast.maketext(loginactivity.this, "something went wrong", toast.length_short).show(); } }) .addapi(auth.google_sign_in_api, gso) .build(); } // googlesigninoptions gso = new googlesigninoptions.builder(googlesigninoptions.default_sign_in) // .requestidtoken(getstring(r.string.default_web_client_id)) // .requestemail() // .build(); private void signin() { intent signinintent = auth.googlesigninapi.getsigninintent(mgoogleapiclient); startactivityforresult(signinintent, rc_sign_in); } @override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); // result returned launching intent googlesigninapi.getsigninintent(...); if (requestcode == rc_sign_in) { googlesigninresult result = auth.googlesigninapi.getsigninresultfromintent(data); if (result.issuccess()) { // google sign in successful, authenticate firebase googlesigninaccount account = result.getsigninaccount(); firebaseauthwithgoogle(account); } else { toast.maketext(loginactivity.this, "auth went wrong", toast.length_short).show(); } } } private void firebaseauthwithgoogle(googlesigninaccount account) { authcredential credential = googleauthprovider.getcredential(account.getidtoken(), null); mauth.signinwithcredential(credential) .addoncompletelistener(this, new oncompletelistener<authresult>() { @override public void oncomplete(@nonnull task<authresult> task) { if (task.issuccessful()) { // sign in success, update ui signed-in user's information log.d("tag", "signinwithcredential:success"); firebaseuser user = mauth.getcurrentuser(); //updateui(user); } else { // if sign in fails, display message user. log.w("tag", "signinwithcredential:failure", task.getexception()); toast.maketext(loginactivity.this, "authentication failed.", toast.length_short).show(); //updateui(null); } } }); } } i've created class fragment code doesn't work there @ because extends fragment instead of appcompatactivity. appreciated.
Comments
Post a Comment