将可编辑对象保存到文件

Saving an Editable object to file

如何将 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();
  }

您不能直接将 EditableSpannableStringBuilder 保存到文件。

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

Android SDK 中的

Html.toHtml() 将采用跨度的子集并从中生成 HTML。

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