คำถามติดแท็ก android-preferences

30
ฉันจะแสดงค่าปัจจุบันของการตั้งค่า Android ในการสรุปการตั้งค่าได้อย่างไร
เรื่องนี้ต้องเกิดขึ้นบ่อยมาก เมื่อผู้ใช้กำลังแก้ไขการตั้งค่าในแอพ Android ฉันต้องการให้พวกเขาสามารถดูค่าที่กำหนดไว้ในปัจจุบันของการตั้งค่าในการPreferenceสรุป ตัวอย่าง: หากฉันมีการตั้งค่าการตั้งค่าสำหรับ "ทิ้งข้อความเก่า" ที่ระบุจำนวนวันหลังจากที่ต้องล้างข้อความ ในPreferenceActivityฉันต้องการให้ผู้ใช้เห็น: "ยกเลิกข้อความเก่า" <- ชื่อ "ล้างข้อความหลังจากxวัน" <- สรุปโดยที่xคือค่ากำหนดปัจจุบัน เครดิตพิเศษ: ทำให้สามารถนำมาใช้ซ้ำได้ดังนั้นฉันสามารถนำไปใช้กับการตั้งค่าทั้งหมดของฉันได้อย่างง่ายดายโดยไม่คำนึงถึงประเภทของพวกเขา (เพื่อให้ทำงานกับ EditTextPreference, ListPreference ฯลฯ ด้วยการเข้ารหัสน้อยที่สุด)

8
SharedPreferences.onSharedPreferenceChangeListener ไม่ได้ถูกเรียกอย่างสม่ำเสมอ
ฉันลงทะเบียนผู้ฟังการเปลี่ยนแปลงค่ากำหนดเช่นนี้ (ในonCreate()กิจกรรมหลักของฉัน): SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.registerOnSharedPreferenceChangeListener( new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged( SharedPreferences prefs, String key) { System.out.println(key); } }); ปัญหาคือผู้ฟังไม่ได้เรียกเสมอ ใช้งานได้สองสามครั้งแรกที่มีการเปลี่ยนแปลงการกำหนดค่าตามความชอบจากนั้นจะไม่มีการเรียกใช้อีกต่อไปจนกว่าฉันจะถอนการติดตั้งและติดตั้งแอปอีกครั้ง ดูเหมือนว่าจะไม่มีการรีสตาร์ทแอปพลิเคชัน ฉันพบเธรดรายชื่อผู้รับจดหมายที่รายงานปัญหาเดียวกัน แต่ไม่มีใครตอบเขาจริงๆ ผมทำอะไรผิดหรือเปล่า?


10
จะเพิ่มปุ่มใน PreferenceScreen ได้อย่างไร?
ฉันค่อนข้างใหม่สำหรับการพัฒนา Android และเพิ่งเจอ Preferences ฉันพบPreferenceScreenและต้องการสร้างฟังก์ชันการเข้าสู่ระบบด้วย ปัญหาเดียวที่ฉันมีคือฉันไม่รู้ว่าจะเพิ่มปุ่ม "เข้าสู่ระบบ" ลงในไฟล์PreferenceScreen. นี่คือPreferenceScreenลักษณะของฉัน: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> ... <PreferenceScreen android:title="@string/login" android:key="Login"> <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference> <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference> </PreferenceScreen> ... </PreferenceScreen> ปุ่มควรอยู่ใต้สองEditTextPreferenceวินาที มีวิธีง่ายๆสำหรับปัญหานี้หรือไม่? วิธีแก้ปัญหาเดียวที่ฉันพบไม่ทำงานเพราะฉันใช้ sub PreferenceScreens อัปเดต: ฉันคิดว่าฉันสามารถเพิ่มปุ่มได้ด้วยวิธีนี้: <PreferenceScreen android:title="@string/login" android:key="Login"> <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference> <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference> <Preference android:layout="@layout/loginButtons" android:key="loginButtons"></Preference> </PreferenceScreen> …

5
การตั้งค่า Android onclick เหตุการณ์
ในการตั้งค่า. xml ของฉันฉันมีองค์ประกอบการกำหนดลักษณะดังนี้: <Preference android:title="About" /> ฉันต้องการกำหนดonClickเหตุการณ์ดังนั้นหากผู้ใช้คลิกที่มันฉันจะสามารถเปิดใหม่Intentหรือเบราว์เซอร์ได้ ฉันพยายามทำเหมือนใช้ปุ่ม แต่ดูเหมือนจะไม่ได้ผล

3
จะใช้ DialogPreference การยืนยัน (ใช่ / ไม่ใช่) ได้อย่างไร
ฉันจะใช้การตั้งค่าที่แสดงกล่องโต้ตอบการยืนยันใช่ / ไม่ใช่แบบธรรมดาได้อย่างไร Browser->Setting->Clear Cacheยกตัวอย่างให้ดู


6
วิธีลบการตั้งค่าที่ใช้ร่วมกันในขณะที่ถอนการติดตั้งแอปพลิเคชันใน Android
ฉันมีแอปพลิเคชัน Android เพื่อบันทึกรายละเอียดการเข้าสู่ระบบเช่นชื่อผู้ใช้และรหัสผ่านซึ่งใช้SharedPreferencesงานได้ดี แต่ฉันจำเป็นต้องลบที่ใช้ทั้งหมดSharedPreferencesในขณะที่ถอนการติดตั้งแอปพลิเคชัน ทำอย่างไร? SavePreferences("one ", ""); SavePreferences("two", ""); LoadPreferences(); private void SavePreferences(String key, String value){ sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.commit(); } private void LoadPreferences(){ sharedPreferences = getSharedPreferences("TEST", MODE_PRIVATE); String strSavedMem1 = sharedPreferences.getString("MEM1", ""); String strSavedMem2 = sharedPreferences.getString("MEM2", ""); } ฉันต้องการลบสิ่งนี้SharedPreferencesเมื่อถอนการติดตั้งแอปพลิเคชันของฉัน

9
จะรับฟังการเปลี่ยนแปลงความชอบภายใน PreferenceFragment ได้อย่างไร
ตามที่อธิบายไว้ที่นี่ฉันกำลังคลาสย่อย PreferenceFragment และแสดงไว้ในกิจกรรม เอกสารนั้นจะอธิบายวิธีการรับฟังการเปลี่ยนแปลงค่ากำหนดที่นี่แต่เฉพาะในกรณีที่คุณซับคลาส PreferenceActivity เนื่องจากฉันไม่ได้ทำอย่างนั้นฉันจะรับฟังการเปลี่ยนแปลงความชอบได้อย่างไร ฉันได้ลองใช้ OnSharedPreferenceChangeListener ใน PreferenceFragment แล้ว แต่ดูเหมือนจะไม่ได้ผล ( onSharedPreferenceChangedดูเหมือนจะไม่ได้รับการเรียก) นี่คือรหัสของฉันจนถึงตอนนี้: SettingsActivity.java public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); } } SettingsFragment.java public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.