android-資料持久化

來源:互聯網
上載者:User

標籤:

動態檔案

String FILE_NAME = "tempfile.tmp";                try {                                        //讀                    FileInputStream fis = openFileInput(FILE_NAME);                    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");                    BufferedReader br = new BufferedReader(isr);                    StringBuffer sb = new StringBuffer();                    while (br.readLine() != null) {                        sb.append(br.readLine()+"\n");                    }                    System.out.println(sb.toString());                                        //寫                    FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);//要讓其它應用組件也能訪問則用MODE_WORLD_WRITEABLE                    File file = new File(FILE_NAME);                    if (!file.exists()) {                        byte[] os = "write file".getBytes("UTF-8");//"這個例子測試檔案寫".getBytes("GB2312");                        fos.write(os);                    }                                    } catch (FileNotFoundException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                } catch (UnsupportedEncodingException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }

 

靜態檔案資源

//這個id是在gen的R.java中產生id. 項目階層為res/raw裡                    InputStream is = getResources().openRawResource(R.raw.info);                    InputStreamReader isr;                    isr = new InputStreamReader(is, "UTF-8");                    BufferedReader bfr = new BufferedReader(isr);                    String inString = "";                    while ((inString = bfr.readLine()) != null) {                        Log.i(TAG, inString);                    }

 

喜好設定

int minimumMagnitude = 0;boolean autoUpdate = false;int updateFreq = 0;//讀Context context = getApplicationContext();      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);      minimumMagnitude = Integer.parseInt(prefs.getString(Preferences.PREF_MIN_MAG, "0"));      updateFreq = Integer.parseInt(prefs.getString(Preferences.PREF_UPDATE_FREQ, "0"));      autoUpdate = prefs.getBoolean(Preferences.PREF_AUTO_UPDATE, false);//寫Context context = getApplicationContext();    prefs = PreferenceManager.getDefaultSharedPreferences(context);Editor editor = prefs.edit();    editor.putBoolean(PREF_AUTO_UPDATE, autoUpdateChecked);    editor.putInt(PREF_UPDATE_FREQ, updateIndex);    editor.putInt(PREF_MIN_MAG, minMagIndex);    editor.commit(); 

Preferences介面是繼承PreferencesActivity,則只需要:

@res/xml/userpreferences.xml<?xml version="1.0" encoding="utf-8"?><PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">  <CheckBoxPreference    android:key="PREF_AUTO_UPDATE"    android:title="Auto refresh"    android:summary="Select to turn on automatic updating"     android:defaultValue="true"  />                          <ListPreference   android:key="PREF_UPDATE_FREQ"   android:title="Refresh frequency"   android:summary="Frequency at which to refresh earthquake list"   android:entries="@array/update_freq_options"   android:entryValues="@array/update_freq_values"   android:dialogTitle="Refresh frequency"   android:defaultValue="60"  />  <ListPreference    android:key="PREF_MIN_MAG"    android:title="Minimum magnitude"    android:summary="Select the minimum magnitude earthquake to report"    android:entries="@array/magnitude_options"    android:entryValues="@array/magnitude"    android:dialogTitle="Magnitude"    android:defaultValue="3"  /></PreferenceScreen>@PreferencesActivitypublic void onCreate(Bundle icicle) {    super.onCreate(icicle);    addPreferencesFromResource(R.xml.userpreferences);      } 

否則,需要在Preferences中手動設定控制項的狀態值,包括ok和cancel鍵所執行的動作回調。

監聽preference的改變

@Activitypublic void onCreate(Bundle icicle) {    Context context = getApplicationContext();    SharedPreferences prefs =  PreferenceManager.getDefaultSharedPreferences(context);    prefs.registerOnSharedPreferenceChangeListener(this);     } public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {}

從activity的preference中讀寫

private ListView myListView;private EditText myEditText;private static final String TEXT_ENTRY_KEY = "TEXT_ENTRY_KEY";private static final String ADDING_ITEM_KEY = "ADDING_ITEM_KEY";public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Inflate your view    setContentView(R.layout.main);          // Get references to UI widgets    myListView = (ListView)findViewById(R.id.myListView);    myEditText = (EditText)findViewById(R.id.myEditText);    restoreUIState();  }private void restoreUIState() {    // Get the activity preferences object.    SharedPreferences settings = getPreferences(0);    // Read the UI state values, specifying default values.    String text = settings.getString(TEXT_ENTRY_KEY, "");    Boolean adding = settings.getBoolean(ADDING_ITEM_KEY, false);    // Restore the UI to the previous state.    if (adding) {      addNewItem();      myEditText.setText(text);    }  }@Override  protected void onPause() {    super.onPause();        // Get the activity preferences object.    SharedPreferences uiState = getPreferences(0);    // Get the preferences editor.    SharedPreferences.Editor editor = uiState.edit();    // Add the UI state preference values.    editor.putString(TEXT_ENTRY_KEY, myEditText.getText().toString());    editor.putBoolean(ADDING_ITEM_KEY, addingNew);    // Commit the preferences.    editor.commit();  }

 

狀態

private static final String SELECTED_INDEX_KEY = "SELECTED_INDEX_KEY";@Override  public void onSaveInstanceState(Bundle outState) {    outState.putInt(SELECTED_INDEX_KEY, myListView.getSelectedItemPosition());    super.onSaveInstanceState(outState);  }  @Override  public void onRestoreInstanceState(Bundle savedInstanceState) {    int pos = -1;    if (savedInstanceState != null)      if (savedInstanceState.containsKey(SELECTED_INDEX_KEY))        pos = savedInstanceState.getInt(SELECTED_INDEX_KEY, -1);    myListView.setSelection(pos);  }

 

android-資料持久化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.