将EditText中的文本保存到SD卡

3

我有一个简单的应用程序,想让用户能够保存EditText控件的内容,并能够添加自由格式文本并将其存储在文本文件中。

我在main.xml中拥有该控件。

<EditText
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="text in here"
        android:id="@+id/editText" android:layout_gravity="center"/>

还有一个菜单项

<item android:id="@+id/menu_add"
      android:icon="@drawable/ic_menu_add"
      android:title="@string/menu_add"
      android:showAsAction="ifRoom|withText"
      android:onClick="addItem"
        />

使用onClick调用我的addItem函数

public void addItem(MenuItem menuItem) {

        String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();

        try {
            FileWriter filenew = new FileWriter(sdcard + "/test.txt");
            BufferedWriter bw = new BufferedWriter(filenew);
            bw.write(menuItem.toString());
            bw.close();
        } catch (IOException e) {
            //You'll need to add proper error handling here
        }

    }

目前menuItem.toString()返回的字符串仅为“Add”,这是可以理解的。

我应该如何访问EditText控件中包含的文本,以便将其添加到test.txt文件中?


不要使用文件存储,如果不必要的话,最好使用SharedPreferences来存储简单数据。http://developer.android.com/guide/topics/data/data-storage.html#pref - Marek Sebera
我希望用户能够添加自由格式文本并将其存储到文本文件中。 - spences10
2个回答

1
首先,您需要使用 findViewById() 获取对 EditText 视图的引用。然后,您可以调用 getText().toString() 将其内容作为字符串获取。

Stefan de Bruijn 给了一个更详细的答案,所以我接受了那个 =/不过还是谢谢你 :) - spences10
@spences10 听起来不错。请注意,即使您只能接受一个答案,但您可以投票支持多个答案。 - Code-Apprentice

1

不确定您如何设置此应用程序,但将数据写入SD卡也可能不是最佳选择。

无论如何,您需要首先使用以下代码(假设您在具有根布局的Activity中设置了setContentView)找到EditText:

EditText mText = (EditText) this.findViewById(R.id.editText); 

如果你将它保存到私有变量中,就可以在整个Activity中使用它。 你可以用以下代码提取文本:
mText.getText().toString(); 

顺便提一下,如果你真的想坚持使用SD卡路径,你可能还需要仔细检查一下获取SD卡路径的方式。如果某人没有挂载SD卡或者SD卡不可达(例如,如果某人的手机在某些情况下通过USB连接),这将给你带来严重的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接