java - 从许多类的类中调用函数而无需重置值

标签 java android android-context function-call public-method

所以基本上我在 Android studio 中有几个不同的 Java 类。其中一个类包含许多函数,我需要根据用户的选择从不同的类中调用这些函数。我的问题是我需要调用这些函数的类来记住它的变量值。这是包含我需要调用的所有函数的类的精确示例,其中一个重要变量是 Logged。

一种解决方案是从每个需要访问该类的类中调用该类,但这需要 Classy classy= new Classy();然后会将变量重置为 null。

public class Classy {
private String snumber;
private String spassword;
public Context context;
private boolean logged = false;

public String getSnumber() {
    return snumber;
}

public String getSpassword() {
    return spassword;
}

public void setContext(Context context) {
    this.context = context;
}

public void setSnumber(String snumber) {
    this.snumber = snumber;
}

public void setSpassword(String spassword) {
    this.spassword = spassword;
}

public boolean getLogged() {
    return logged;
}

public void setLogged(boolean logged) {
    this.logged = logged;
}

public boolean Read() {

    try {
        InputStream inputStream = context.openFileInput("COHFTW.txt");
        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ((receiveString = bufferedReader.readLine()) != null) {
                stringBuilder.append(receiveString);
            }
            inputStream.close();
            String contents = stringBuilder.toString();
            if (contents.isEmpty()) {
                return false;
            } else {
                snumber = contents.substring(0, contents.indexOf("#"));
                spassword = contents.substring(contents.indexOf("#") + 1);
            }
        }
    } catch (FileNotFoundException e) {
        System.out.println("_______________File Not Found_________________");
        return false;

    } catch (IOException e) {
        System.out.println("________________File Unreadable________________");
        return false;

    }

    return true;
}


public boolean ClearFile() {


    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("COHFTW.txt", Context.MODE_PRIVATE));

        outputStreamWriter.write("");
        outputStreamWriter.close();
        System.out.println("________________________File Cleared________________");
        return true;

    } catch (Exception e) {
        System.out.println("________________Error:" + e + "________________");

        return false;

    }

}


public boolean Write() {

    System.out.println("________________Writing" + snumber + " " + spassword + "________________");

    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("COHFTW.txt", Context.MODE_PRIVATE));

        outputStreamWriter.write(snumber + "#" + spassword);
        outputStreamWriter.close();
        System.out.println("________________________Saved: " + snumber + "#" + spassword + "________________");
        return true;

    } catch (Exception e) {
        System.out.println("________________Error:" + e + "________________");

        return false;

    }

}

}

任何帮助将不胜感激,因为目前我每次想要访问网页时都会从文本文件中读取(名称和密码是从文本文件中获取的),并且它会导致一些严重的滞后。

最佳答案

这听起来像是 Singleton 类的完美用例!

首先创建类的私有(private)静态实例。

public class Classy {
    private static Classy instance;

接下来创建一个私有(private)构造函数公共(public)方法来调用该构造函数

private Classy(){ /*... */ }

public void instantiate(){
    if(instance != null) return;
    instance = new Classy();
} 

最后创建一个方法来获取你的单例

public static Classy getInstance() {
    // Optionally include a null check
    // if(instance == null) instantiate();
    return instance;
}

最终结果允许您跨任何类访问您的值,如下所示:

Classy.getInstance().getSpassword()

关于java - 从许多类的类中调用函数而无需重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565017/

相关文章:

java - 如何从 "Credential storage"加载证书?

java - 如何使用android中的代码从两个单声道音频文件创建立体声音频文件

java - 如何使用 XML 输入变量以根据 XSD 进行验证

android - 将 ListView 选择的文本传递给另一个 Activity

java - 类必须声明为抽象或实现抽象方法错误

Android EditText 如何在所有字符的末尾开始光标指针 - 而不是第一行的末尾

android - ListFragment 和上下文

android - 从辅助模块获取应用程序上下文

java - Android 上隐藏键盘会导致应用程序崩溃

java - 从不同的类调用非静态方法(位于主类中)