当前位置: 首页 > 知识库问答 >
问题:

如何调用onActivityResult在非活动类Android

吴谦
2023-03-14

我已经创建了一个片段,当点击一个按钮时,会弹出一个类似对话框的ALTERVIEW。在该视图中包括谷歌登录按钮。当我连接到firebase并在startActivityForResult之后继续执行时,我需要重写onActivityResult方法。但弹出对应的类扩展了另一个对话框类,不能重写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);}

在after startActivityForResult()中,我需要获得结果,并使用了onActivityResult(),但我无法重写该对话框Google类中的方法。我通常在按钮单击中运行SigningLogle()方法

共有1个答案

璩华辉
2023-03-14

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

 类似资料:
  • 在我的非活动类中,我请求了一个Fine location权限,但回调onRequestPermissionsResult“永远不会被调用”。现在我看到了一些与此相关的问题,但他们都认为请求是从活动或片段发出的,没有人考虑从非活动类发出请求。这是我的代码 这是onRequestPermissionResultCallback方法的实现 解决了:正如一些人提到的“activity”的onRequest

  • inputText字段的代码如下所示; 到目前为止,我已经试着对包含面板进行了定时的部分刷新,我已经将typeahead模式从无设置为满。没什么区别。 除了每10分钟刷新一次页面之外,还有什么是夫妇造成的问题。仅供参考的是,实际的typeahead是正确工作一致的,它只是onchange事件停止发射。

  • CustomDialog 下面是http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample

  • 问题内容: 我发现一个答案似乎表明我应该创建一个单独的类,并创建一个静态MyApplication对象,并创建一个get方法。然后,任何类都可以调用MyApplication.get()来检索上下文。 还有其他更清洁的方法吗?这是我的情况: 我有一个类A和一个类B。类A包含一个来自类B的对象(我们称为对象b)。在AI类中,称为“ b.play()”。但是,我得到一个空指针异常,因为类B需要将上下文

  • 如何从运行在非活动类中的ktor路由API调用(例如/POST)中的另一个活动(registerForActivity)中获取结果? 背景:对于一个Android应用程序,我在一个非活动类HttpS中运行ktor服务器引擎'netty'erver.kt.我需要从ktor的路由'POST处理程序中调用另一个应用程序的活动,所以我从MainA传递'appCompatactive'ctivity.kt.

  • 我最近开始学习Hilt,现在它给我的头疼比快乐多,但是我喜欢挑战,所以让我们开门见山吧。 我在理解如何在非活动类中注入方面有很多问题,例如注入一个上下文或任何其他类。 到目前为止,我的大多数非活动类都是对象(单例),但由于我无法注入对象,我决定将它们转换为类。 我尝试用字段注入来注入,因为如果我用@ AndroidEntryPoint来使用构造函数注入,它会报错类必须从AppCompatActiv