本社群由Nantou.py使用者社群以及國立虎尾科技大學電機資訊學院負責維護,它是一群熱愛智慧生活科技以及Python的專業教師所組成,大家一同快樂地研究有關數位生活中人工智慧、大數據、物聯網、雲端服務、APPS、福祉科技、感知網路服務、車載網路服務、及網際網路等資通訊技術,並運用這些資通訊以及Python技術來提升我們的日常生活品質,建立更好的生活環境。
2013年2月5日 星期二
Fragment子類別之PreferenceFragment
在Fragment子類別中包括了 ListFragment 、DialogFragment、PreferenceFragment 及 WebViewFragment,我們已經討論過ListFragment及DialogFragment接著繼續探討PreferenceFragment應用。
Preference稱之為"偏好設定",顧名思義如果使用在程式內容中代表你可以儲存一些資訊給程式來使用。在 Android中常見使用在程式參數設定、網頁資源(帳號、密碼之類)儲存或是新聞RSS更新時間儲存等等應用;這類的開發方法常見有 SharedPreferences 、 PreferenceActivity 及 OnPreferenceChangeListener等類別,如果使用Fragment的話就是使用PreferenceFragment類別。
實作環境:
Win 7 Sp1
Java version 1.6.0_35
Eclipse 3.7.2
ADT 20.0.1
ASUS Nexus 7 平板 (4.1.2)
HTC Sensation 手機 (4.0.3)
步驟:
1.用Eclipse建立一個Android 3.x項目以上專案並命名為PreferenceFragmentExample
2. 在res目錄下建立一個xml子目錄,在xml子目錄下建立一個 AndroidXML檔案,並將其命名為preferences.xml 其內容如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="Category 1" >
<CheckBoxPreference
android:defaultValue="false"
android:key="checkboxPref"
android:summary="True of False"
android:title="Checkbox" />
</PreferenceCategory>
<PreferenceCategory android:title="Category 2" >
<EditTextPreference
android:name="EditText"
android:defaultValue="[Enter a string here]"
android:key="editTextPref"
android:summary="Enter a string"
android:title="Edit Text" />
<RingtonePreference
android:name="Ringtone Preference"
android:key="ringtonePref"
android:summary="Select a ringtone"
android:title="Ringtones" />
<PreferenceScreen
android:key="secondPrefScreenPref"
android:summary="Click here to go to the second Preference Screen"
android:title="Second Preference Screen" >
<EditTextPreference
android:name="EditText"
android:key="secondEditTextPref"
android:summary="Enter a string"
android:title="Edit Text (second Screen)" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
3.main.xml內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
4.在src/ package目錄下增加 Fragment1.java,內容如下:
package net.learn2develop.PreferenceFragmentExample;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class Fragment1 extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
5.MainActivity內容如下:
package net.learn2develop.PreferenceFragmentExample;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.replace(android.R.id.content, fragment1);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
6. AndroidManifest.xml保持預設。
執行結果:
1.程式開始執行時會出現一個參數設定選項畫面。
2.選擇EditText選項後,輸入"南開科技大學數位生活創意系"後按下確定。
3.選擇Second Preference Screen選項,可以進入第二層Preference畫面,用返回(Back)鍵可以回到上層或離開PreferenceFragment。
4.接著確認在第2步驟中所輸入的資訊是否有存檔:
(1)如果使用模擬器的話可以使用DDMS中的File Explorer,選擇目錄 /data/data/package目錄/shared_prefs會看到一個xml檔案。
(2)如果使用平板,使用檔案總管的App選擇目錄 /data/data/package目錄/shared_prefs同樣也會看到一個xml檔案。
(3)打開xml檔案內容如下:
程式及文章參考來源:Beginning Android Tablet Application Development.
其他詳見官網 PreferenceFragment。
參考:
1.SharedPreferences
http://developer.android.com/reference/android/content/SharedPreferences.html
2.PreferenceActivity
http://developer.android.com/reference/android/preference/PreferenceActivity.html
3. Preference.OnPreferenceChangeListener
http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html
4. PreferenceFragment
http://developer.android.com/reference/android/preference/PreferenceFragment.html
5. Beginning Android Tablet Application Development
http://www.wrox.com/WileyCDA/WroxTitle/Beginning-Android-Tablet-Application-Development.productCd-1118106733.html
==============延伸閱讀=====================
1.第一支Android Fragment程式--HelloFragment
http://cheng-min-i-taiwan.blogspot.tw/2012/04/android-fragment-hellofragment.html
2.Android Fragments 的生命週期
http://cheng-min-i-taiwan.blogspot.tw/2012/12/android-fragments.html
3.Fragment間的資料傳遞
http://cheng-min-i-taiwan.blogspot.tw/2013/01/fragment.html
4.Fragment與Activity間的資料傳遞
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentactivity.html
5.Fragment子類別之ListFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentlistfragment.html
6.Fragment子類別之DialogFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentdialogfragment.html
7.Fragment子類別之PreferenceFragment
http://www.cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentpreferencefragment.html
8.Fragment子類別之WebViewFragment
http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentwebviewfragment.html
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言