Android 如何在身份验证成功后完成活动
我试图在fingerAuthentification成功后完成登录活动,我尝试使用“finish()”和“finishAffinity()”,但出现错误“cannot resolver method finish()或finishAffinity())Android 如何在身份验证成功后完成活动,android,android-studio,Android,Android Studio,我试图在fingerAuthentification成功后完成登录活动,我尝试使用“finish()”和“finishAffinity()”,但出现错误“cannot resolver method finish()或finishAffinity()) finish()是Activity上的一个方法,而不是Context。您无法完成一个上下文。不清楚您是否在活动的上下文中运行。如果是,只需自己调用finish()(或YourActivity.this.finish())。finish()是活动上
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()新错误”不是一个封闭类“您要么需要有一个要完成的活动的句柄,要么需要让该活动接受一个指示它完成的意图操作(或者想出一个方法,向它传递一条消息,告诉它完成).很好!正是我需要的。谢谢你!很好!正是我需要的。谢谢你,兄弟