Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在身份验证成功后完成活动_Android_Android Studio - Fatal编程技术网

Android 如何在身份验证成功后完成活动

Android 如何在身份验证成功后完成活动,android,android-studio,Android,Android Studio,我试图在fingerAuthentification成功后完成登录活动,我尝试使用“finish()”和“finishAffinity()”,但出现错误“cannot resolver method finish()或finishAffinity()) finish()是Activity上的一个方法,而不是Context。您无法完成一个上下文。不清楚您是否在活动的上下文中运行。如果是,只需自己调用finish()(或YourActivity.this.finish())。finish()是活动上

我试图在fingerAuthentification成功后完成登录活动,我尝试使用“finish()”和“finishAffinity()”,但出现错误“cannot resolver method finish()或finishAffinity())


finish()
Activity
上的一个方法,而不是
Context
。您无法完成一个上下文。不清楚您是否在活动的上下文中运行。如果是,只需自己调用
finish()
(或
YourActivity.this.finish()
)。

finish()
活动
上的一种方法,而不是
上下文
。您无法完成上下文。不清楚您是否在活动上下文中运行。如果是,只需对自己(或
您的活动.this.finish()
)调用
finish()

我以前没有尝试过,但理论上这应该可以:

步骤1:在构造函数中传递一个
活动
,而不是
上下文
您想要完成的活动

步骤2:将此活动分配给私有变量

步骤3:在需要时对变量调用
finish()

代码类似于:

public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {

    private CancellationSignal cancellationSignal;
    private Activity activity;

    public FingerprintHandler(Activity mActivity) { activity = mActivity; }

    .....

    @Override
    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
    Toast.makeText(activity.getApplicationContext(), "Authentication Success!!", Toast.LENGTH_SHORT).show();
    Handler hd = new Handler();
    hd.postDelayed(new Runnable() {
        @Override
        public void run() {
            activity.startActivity(new Intent(context, MainActivity.class));
            activity.finish();
        }
    }, 2000);

我以前从未尝试过,但理论上这应该是可行的:

步骤1:在构造函数中传递一个
活动
,而不是
上下文
您想要完成的活动

步骤2:将此活动分配给私有变量

步骤3:在需要时对变量调用
finish()

代码类似于:

public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {

    private CancellationSignal cancellationSignal;
    private Activity activity;

    public FingerprintHandler(Activity mActivity) { activity = mActivity; }

    .....

    @Override
    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
    Toast.makeText(activity.getApplicationContext(), "Authentication Success!!", Toast.LENGTH_SHORT).show();
    Handler hd = new Handler();
    hd.postDelayed(new Runnable() {
        @Override
        public void run() {
            activity.startActivity(new Intent(context, MainActivity.class));
            activity.finish();
        }
    }, 2000);

使用此选项访问活动的覆盖方法:

if(FingerLogin的上下文实例){
((FingerLogin)context.finish();
}

使用此选项访问活动的覆盖方法:

if(FingerLogin的上下文实例){
((FingerLogin)context.finish();
}

请发布整个类。@SusmitAgrawal我已经用整个java类更新了我的问题。请发布整个类。@SusmitAgrawal我用整个java类更新了我的问题谢谢你的评论,我尝试了FingerLogin.this.finish()并得到错误“Non-static method”finish()'无法从静态上下文中引用。您没有这样做。您尝试了
FingerLogin.finish()
,而不是
FingerLogin.this.finish()
。前者试图调用
FingerLogin
类上的静态方法
finish()
,但该类不存在。如果我使用FingerLogin,则不好。this.finish()new errer“不是一个封闭类”您需要有一个要完成的活动的句柄,或者您需要让该活动接受一个指示其完成的意图操作(或者想出一个方法向其传递一条消息,告诉其完成)。感谢您的评论,我尝试了FingerLogin。this.finish()并获得错误“Non static method”finish()“无法从静态上下文引用。您没有这样做。您尝试了
FingerLogin.finish()
,而不是
FingerLogin.this.finish()
。前者试图调用
FingerLogin
类上不存在的静态方法
FingerLogin()
。如果我使用FingerLogin,我的错误。this.finish()新错误”不是一个封闭类“您要么需要有一个要完成的活动的句柄,要么需要让该活动接受一个指示它完成的意图操作(或者想出一个方法,向它传递一条消息,告诉它完成).很好!正是我需要的。谢谢你!很好!正是我需要的。谢谢你,兄弟