离开保存活动后的文件,不会在其他活动中刷新

时间:2014-01-06 20:57:28

标签: android file save refresh reload

我有一个具体的问题。我有一个有很多活动的应用程序。在活动“settings.class”中,我创建了“config.txt”文件并保存 - 一切正常。当我尝试在同一个活动中读取此文件时,我得到一个我保存到此文件中的字符串。但是,当我关闭此活动“settings.class”并返回“MainActivity.class”并尝试从此“config.txt”文件中读取时,我得到一个旧的字符串,该字符串在未实际保存之前存储...

我通过重启我的应用程序解决了我的问题,之后一切正常。但我想知道为什么会这样。

这是我的代码:

这是在类实用程序中:

  public void WriteSettingFile(String txt_msg, Context ctx) throws IOException
{
    FileOutputStream fp = null;

    fp = ctx.openFileOutput("edog_con.txt",Context.MODE_PRIVATE);   
    fp.write(txt_msg.getBytes());   
    fp.close();     
}

    private String ReadSettingFile(Context ctx) throws IOException
{
    FileInputStream fp;
    String tmp_string;
    StringBuilder sb = null;


    fp = ctx.openFileInput("edog_con.txt");
    if (fp != null)
    {
        InputStreamReader isr = new InputStreamReader(fp);
        BufferedReader br = new BufferedReader(isr);
        sb = new StringBuilder();

        while( (tmp_string = br.readLine()) != null)
        {
            sb.append(tmp_string);
        }

        fp.close();         
    }


    return sb.toString();
}

// Vrati ulozene telefonne cislo
public String GetPhoneNumber (Context ctx)
{
    String tmp = "";
    String[] casti;

    // Nacitanie suboru. Ak nie je, tak vrat chybu
    try 
    {
        tmp = ReadSettingFile(ctx);
    } 
    catch (IOException e) 
    {
        return "err";
    }

    // Ak retazec obsahuje ',' - mal by - tak pokracuj. Ak nie chyba
    if (tmp.contains(","))
    {
        // rozdel string na dve casti - pred a po ciarke. pred je tel. cislo
        casti = tmp.split(",");
    }
    else
        return "err";

    return casti[0];
}

这是在我写入.txt文件的Setting.class中。当我尝试从此活动类中的文件读取时,一切正常,我将实际数据保存到.txt文件中

public class Settings extends Activity
{
  ....

  // Save button and so on

  ... 
Utilities ut = new Utilities();
try
{
     ut.WriteSettingFile(save_info, Settings.this);
} 
catch (IOException e)
{   
    alert_msg.setMessage(R.string.alert_bad_file).show();
}

// I have to reset the application instead of this - and then it works
Settings.this.finish();

 .... 
}

当我尝试从这个片段Water.class中的文件中读取时,我读到以前保存的字符串并未实际保存。我必须重置应用程序,所以之前的“Settings.this.finish()” 我不使用,我以编程方式重置整个应用程序。

Water.class

 public class Water extends Fragment
 {
...
Utilities ut = new Utilities();
String data;

...

    // This gets an old saved string in .txt file
data = ut.GetPhoneNumber(this.getActivity())

  }

0 个答案:

没有答案