Android 如何在没有这个Lint错误的情况下通过静态工厂方法传递上下文?

Android 如何在没有这个Lint错误的情况下通过静态工厂方法传递上下文?,android,Android,我正在尝试为GoogleSignIn创建一个静态类,以便可以在多个片段中重用它。由于GoogleSignIn方法需要一个上下文,因此我将其传递给构造函数。 但是,它会抛出此lint错误。我应该关心通过这个构造函数传递上下文吗 Singleton类的意思是将一个类作为Singleton 由于只有一个AuthStateManager实例,并且所有变量都是private,因此可以从变量中删除static 更新 public class AuthStateManager { private

我正在尝试为
GoogleSignIn
创建一个静态类,以便可以在多个片段中重用它。由于
GoogleSignIn
方法需要一个上下文,因此我将其传递给构造函数。 但是,它会抛出此
lint
错误。我应该关心通过这个构造函数传递上下文吗


Singleton类的意思是将一个类作为Singleton

由于只有一个
AuthStateManager
实例,并且所有变量都是
private
,因此可以从变量中删除
static

更新

public class AuthStateManager {

    private static final String TAG = "AuthStateManager";

    private static AuthStateManager authStateManager;
    private GoogleSignInClient googleSignInClient;
    private GoogleSignInAccount googleSignInAccount;
    private GoogleSignInOptions googleSignInOptions;

    private AuthStateManager() {
        googleSignInOptions = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(context.getString(R.string.idclient))
                .requestEmail()
                .build();

        googleSignInClient = GoogleSignIn.getClient(context, googleSignInOptions);
        googleSignInAccount = GoogleSignIn.getLastSignedInAccount(context);
    }

    public static AuthStateManager getInstance(Context context) {
        if(authStateManager == null){
            authStateManager = new AuthStateManager();
        }

        return authStateManager;
    }


    public String getIdToken() {
        if (googleSignInAccount != null) {
            return googleSignInAccount.getIdToken();
        }
        return null;
    }

    public boolean isUserSignedIn() {
        if (googleSignInAccount != null) {
            return true;
        }
        return false;
    }

除了
标记
,为什么这些字段的其余部分是静态的?它们似乎不需要是静态的。如果我将其设置为非静态,我将无法在片段中访问它,如果我将AuthStateManager工厂方法设置为静态,那么我将不得不将该类的变量设置为静态,这将导致
lint
错误@DIRTYDAVE,我错了,只有
AuthStateManager
应该是静止的static@DIRTYDAVE我已经更新了我的答案,我没有想到将
googlesign
方法放在私有构造函数中。我还在私有构造函数中添加了上下文。这里是最后一段不会抛出任何错误的代码:谢谢你的帮助。我为此挣扎了一段时间。
public class AuthStateManager {

    private static final String TAG = "AuthStateManager";

    private static AuthStateManager authStateManager;
    private GoogleSignInClient googleSignInClient;
    private GoogleSignInAccount googleSignInAccount;
    private GoogleSignInOptions googleSignInOptions;

    private AuthStateManager() {
        googleSignInOptions = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(context.getString(R.string.idclient))
                .requestEmail()
                .build();

        googleSignInClient = GoogleSignIn.getClient(context, googleSignInOptions);
        googleSignInAccount = GoogleSignIn.getLastSignedInAccount(context);
    }

    public static AuthStateManager getInstance(Context context) {
        if(authStateManager == null){
            authStateManager = new AuthStateManager();
        }

        return authStateManager;
    }


    public String getIdToken() {
        if (googleSignInAccount != null) {
            return googleSignInAccount.getIdToken();
        }
        return null;
    }

    public boolean isUserSignedIn() {
        if (googleSignInAccount != null) {
            return true;
        }
        return false;
    }