Android وتخزين / تحميل تفضيلات الموارد - كيفية تحقيق الاتساق؟

StackOverflow https://stackoverflow.com/questions/1886763

سؤال

أنا أكتب تطبيقا واحتاج إلى بعض المساعدة في تخزين وتفضيلات التحميل باستمرار إلى موارد معينة. اسمحوا لي أن أقدم مثالا على ذلك.

لنفترض أن لدي 10 المغازل. لديهم جميعا نفس الوظيفة ولكن معنى مختلف. لأن لديهم نفس الوظيفة، يمكنني ربطها بنفس الشيء onItemSelectedListener, والتي سوف تتعامل بعد ذلك مع القيمة المحددة.

حسنا، ماذا لو كنت أريد أيضا تخزين التفضيلات لكل سبينر؟ على سبيل المثال، عندما يتم تحديد قيمة Spinner، كنت أخزن مفتاح "Spinner شيئا ما"= بعض_data.

المشكلة هي - ماذا يجب أن هذا شيئا ما يكون؟ المستمع لديه التوقيع التالي:

public void onItemSelected(AdapterView parent, View v, int position, long id)

الموضع والمعرف غير مفيد هنا لأنهم يحددون نسبة إلى كل سبينر.

ومع ذلك، يجب أن يكون لدى الوالد، الذي في هذه الحالة هو الدوار نفسه، جميع المعلومات التي أحتاجها. حاولت استخدام Palent.getid () للحصول على معرف مورد لكل سبينر وتخزين التفضيل باستخدام مفتاح "معرف سبينر" مفاتيح ولكن يبدو أن هذه المعرفات المورد هذه عند إضافة المزيد من الموارد إلى تطبيقك، لذلك سيتم إعادة تعيين إعداداتي لأن تغيير مفاتيح.

ماذا يجب أن أفعل هنا؟ لا يبدو لي أن أجد وظيفة Palyment.getName () من نوع ما من شأنه أن يعيدني اسم ثابت لكل سبينر.

شكرًا لك.

هل كانت مفيدة؟

المحلول

ال getId هل هذا هو الشيء الوحيد الذي أعرفه بهذا لديه مرجع فريد من الرأي، ولكن كما تقول، قد لا يكون للرأي نفس المعرف في المبنى التالي لتطبيقك.

أفضل معرف قابل للقراءة بشراء متاح خارج الصندوق سيكون getPrompt, ، والتي من شأنها أن تظهر لك ببساطة كل ما قمت بتعيينه كمغينين. يجب أن يكون معرف موافق، ولكن بالطبع عرضة أيضا للكسر إذا قمت بتغيير النصوص الفوري يدويا.

الطريقة الأكثر إثارة للكسر، إذن، هي تحديد معرف في الحاوية العامة - tag - أن كل عرض يحتوي على.

String myIdentifier = (String) parent.getTag();

إذا كنت تستخدم بالفعل علامة لشيء آخر، فإن 1.6 APIS تشمل القدرة على تحديد العديد من العلامات، والوصول إليها عبر الفهرس. إذا كنت بحاجة إلى دعم إصدارات API القديمة، فيمكنك دائما تعيين العلامة إلى كائن Wrapper يحتوي على كل من المعرف، والعلامة الأصلية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top