2013-01-02 80 views
3

我有一個簡單的應用程序,我希望能夠保存的EditText控制的內容,以便用戶可以添加自由格式的文本,並將其存儲在一個文本文件的EditText「文本」到SD卡

我在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()可以理解只是返回字符串「添加」

我怎麼能訪問包含在的EditText控件中的文本,所以我可以添加到test.txt文件?

+0

不要使用文件存儲(如果不是必要的話),最好使用SharedPreferences來存儲簡單數據。 http://developer.android.com/guide/topics/data/data-storage.html#pref –

+0

我希望用戶能夠添加自由格式文本並將其存儲在文本文件中 – spences10

回答

1

不知道你是如何設置這個應用程序,但寫你的數據到SD卡也可能不是最好的主意。

總之,你需要使用(假設你在其中有根佈局的setContentView設置一個活動是)先找到你的EditText:

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

如果您保存到一個私有變量,你可以只是在您的活動中使用它。 你可以拿出文字:

mText.getText().toString(); 

ps。如果你確實想堅持這一點,你可能還想仔細看看你獲得SD卡路徑的方式。如果有人沒有安裝SD卡或無法訪問(例如某些人的手機在某些情況下與USB連接),這會造成嚴重的問題。

+0

很好的解釋,謝謝 – spences10

1

首先,您需要使用findViewById()來獲取對EditText視圖的引用。然後,您可以撥打getText().toString()以String形式獲取其內容。

+0

非常感謝:) – spences10

+0

@ spences10感謝您的接受。請提高我的答案。謝謝;-) –

+0

Stefan de Bruijn給出了一個更詳細的答案,所以我接受=/ 仍然謝謝你:) – spences10