如何在非Activity类的android中调用onActivityResult

问题描述 投票:0回答:1

我已经创建了Fragment,当单击一个按钮时,会弹出如对话框alter view的弹出窗口。在该视图中,包括google登录按钮。当我连接到Firebase并在startActivityForResult之后继续执行时,我需要重写onActivityResult方法。但是弹出窗口对应的类扩展了另一个Dialog类,并且不能重写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类中的方法。我通常在按钮单击中运行signInGoogle()方法

java android firebase authentication
1个回答
0
投票

您在Activity中启动Fragments,然后在其中重写onActivityResult方法,但首先像在文档中一样开始auth:

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是一个静态字段,这是您可以检查活动是否完成的指示符。

© www.soinside.com 2019 - 2024. All rights reserved.