2015-01-03 34 views
0

我對我所做的事情完全陌生,我真的認爲我完全錯了。將重要的應用程序內容保存到xml資源中

無論如何......我正在嘗試製作一個測試應用程序,您在editText中編寫了一些字符串,應用程序應該將它保存到下一次啓動中。

我試圖通過xml資源做到這一點,它似乎完全搞砸了。請幫幫我!

這是我的佈局看起來像:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".Filedemo" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="130dp" 
    android:text="finish" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="111dp" 
    android:ems="10" 
    android:inputType="textMultiLine" > 

    <requestFocus /> 
</EditText> 

</RelativeLayout> 

這是我想要的字符串保存到XML:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<item name="thetext" type="id"/> 
<item name="textik" type="whatever"> 
    <thetext>hello</thetext> 
</item> 
</resources> 

...和finaly我的Java代碼:

public class Filedemo extends Activity { 
private Document doc; 
private EditText etext; 
private Button but; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_filedemo); 

    etext = (EditText)findViewById(R.id.editText1); 
    but = (Button)findViewById(R.id.button1); 

    Context context = getApplicationContext(); 
    InputStream istream = context.getResources().openRawResource(R.id.thetext); 

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();  
    DocumentBuilder docBuilder = null;           
    try {                  
     docBuilder = docFactory.newDocumentBuilder();       
    } catch (ParserConfigurationException e1) {        
     // TODO Auto-generated catch block        
     e1.printStackTrace();           
    }                
    try {              
     doc = docBuilder.parse(istream);        
    } catch (SAXException e) {          
     // TODO Auto-generated catch block       
     e.printStackTrace();          
    } catch (IOException e) {        
     // TODO Auto-generated catch block     
     e.printStackTrace();          
    }                 
    final Node textik = doc.getElementsByTagName("thetext").item(1);   

    etext.setText(textik.getTextContent()); 

    but.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      String s = etext.getText().toString(); 
      textik.setTextContent(s); 
      System.exit(0); 
     } 
    }); 
} 

} 
+1

不是將它存儲在xml中,而是將字符串存儲在'SharedPreferences'中。配置起來更容易。見https://developer.android.com/training/basics/data-storage/shared-preferences.html – akash93

+0

非常感謝你! –

回答

1

您無法寫入資源。資源和資產在運行時是隻讀的。不過,歡迎您將您的數據保存在internal storage上。

相關問題