如果声明不能很好地运行Android

时间:2015-05-12 17:26:17

标签: android if-statement

我有一个应用程序,每次打开它时,应用程序会读取保存到内部存储器中的文件并打印一些内容。然后它更新文件。

String filename = "myfile";
String restore = "";
FileOutputStream outputStream;
FileInputStream inputStream;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    restore = read();
    System.out.println("Before if statement the restore value is: " + restore);
    if(restore == "test3"){
                restore = "test4";
                System.out.println("I' m saving: " +restore);
                save(restore);
            }
            if(restore == "test2"){
                restore = "test3";
                System.out.println("I'm saving: " +restore);
                save(restore);
            }
           if(restore2 == "test1"){
                restore = "test2";
                System.out.println("I'm saving  " +restore);
                save(restore);
            }
}
 public String read() {
    try {
        inputStream = openFileInput(filename);
        StringBuilder builder = new StringBuilder();
        String restore2 = null;
        int ch;
        while((ch = inputStream.read()) != -1){
            builder.append((char)ch);
        }
       System.out.println(builder.toString());
        if(builder.toString() != null) {
            restore2 = builder.toString();
            System.out.println("Restore 2 value is: " + restore2);
        }
        inputStream.close();
        return restore2;

    } catch (Exception e) {
        e.printStackTrace();
        return "test1";
    }

 }

private void save(String salvare) {
    try {
    outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
    outputStream.write(salvare.getBytes());
        System.out.println("I saved: " + salvare);
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}
}

当我第一次打开应用程序时,一切顺利,我得到了:

Before if statement the restore value is test1 I'm saving test1 I saved test 1

当我重新打开我的应用程序时,read()函数运行良好,因为我得到了

Before if statement the restore value is test2

但我没有得到I'm saving test2。这意味着第二个if语句似乎没用。看着我的日志猫我没有得到任何类型的错误。可能是什么问题?

1 个答案:

答案 0 :(得分:5)

Java中的

String是对象。因此,应将它们与equals方法进行比较,而不是==运算符(检查标识)。

E.g:

if (restore.equals("test3")) {