簡體   English   中英

如何在非活動 class android 中調用 onActivityResult

[英]how to call onActivityResult in non Activity class android

我已經創建了 Fragment,當單擊按鈕時會彈出對話框更改視圖。 在該視圖中包括谷歌登錄按鈕。 當我連接到 firebase 並在startActivityForResult之后繼續執行時,我需要覆蓋 onActivityResult 方法。 但彈出對應 class 擴展另一個對話框 class 並且不能覆蓋 onActivityResult 方法。 當要覆蓋它時,它顯示方法不會從其超類錯誤中覆蓋方法 如何解決這個問題。 以及如何實現我的 firebase 登錄。

謝謝你。 這是我的代碼

public class DialogGoogle extends Dialog  { private Activity activity; @BindView(R.id.btn_google)
LinearLayout btnGoogle; private GoogleSignInClient mGoogleSignInClient;
private FirebaseAuth mAuth;
private int RC_SIGN_IN = 1; public DialogGoogle(Activity a, boolean isTab, int width, int height) {
    super(a, R.style.DialogTheme);
    this.activity = a;
    this.isTab = isTab;
    this.windowWidth = width;
    this.windowHeight = height;} 

在 onCreate 方法中

// Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    // Configure Google Sign In
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(this.activity.getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this.activity,gso);

在我創建了一些方法之后

public void signInGoogle() {Intent signInIntent = mGoogleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent, RC_SIGN_IN);}

在 startActivityForResult() 之后我需要得到結果並且我使用了 onActivityResult() 但我無法覆蓋 DialogGoogle class 中的方法。 我通常在單擊按鈕時運行 signInGoogle() 方法

您在 Activity 中啟動 Fragments 並在那里覆蓋onActivityResult方法,但首先您像在文檔中一樣啟動身份驗證:

List<AuthUI.IdpConfig> providers = Arrays.asList(
    new AuthUI.IdpConfig.EmailBuilder().build(),
    new AuthUI.IdpConfig.PhoneBuilder().build(),
    new AuthUI.IdpConfig.GoogleBuilder().build(),
    new AuthUI.IdpConfig.FacebookBuilder().build(),
    new AuthUI.IdpConfig.TwitterBuilder().build());
// Create and launch sign-in intent
startActivityForResult(
    AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(providers)
            .build(),
    RC_SIGN_IN);

RC_SIGN_IN 是一個 static 字段,這是您可以檢查活動是否完成的指示器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM