将可编辑对象保存到文件

时间:2015-04-14 16:31:36

标签: android android-edittext spannablestring

如何将mEditText.getText();等可修改对象保存到文件中? 我尝试使用以下代码并且它可以工作,但最后我得到IOExceptionIOException.getLocalizedMessage();IOException.getMessage();都显示以下字符串。

E/Error:(5223): android.text.SpannableStringBuilder

以下是我尝试过的代码:

      try {                                                                                             
      SpannableStringBuilder ssb = new SpannableStringBuilder(mMainEditText.getText());

      //Create a File object with user entered file name...
      File outputFile = new File(getDocStorageFolder(),
              mUserEnterFileName
              + ".msd");

      Log.e("Path:", "" + outputFile.getAbsolutePath());        
  Toast.makeText(MainActivity.this, "" + outputFile.getAbsolutePath(), Toast.LENGTH_LONG).show();

  FileOutputStream fos = new FileOutputStream(outputFile); //create your FileOutputStream here                      

      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(ssb);
      oos.close();
      oos.flush();
      fos.close();                                              

      Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_LONG).show();
  } catch (IOException e) {
      e.printStackTrace();      
      Log.e("Error: ", e.getMessage());
      Log.e("Error: ", e.getLocalizedMessage());
      Toast.makeText(MainActivity.this, "Error occured while "
              + "attempting to create the Document file!", Toast.LENGTH_LONG).show();
  }

1 个答案:

答案 0 :(得分:1)

您无法直接将EditableSpannableStringBuilder保存到文件中。

欢迎您将Spanned内容转换为可写入文件的内容。我不知道任何涵盖所有可能跨度的东西,很大程度上是因为任何人都可以发明自己的跨度。

Android SDK中的

Html.toHtml()将采用一部分跨度并从中生成HTML。

此外,my CWAC-RichEdit library包含a SpannedXhtmlGenerator,它将不同的跨度子集转换为XHTML,旨在使用同一个库中的SpannableStringGenerator进行回读。