سؤال

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

لدي في مكتبتي:

  1. أ library_layout.xml تحتوي

    u003CTextView
    Android: id = "@+id/str_my_string"
    Android: layout_width = "wrap_content"
    Android: layout_text = "wall_content"
    >

  2. ملف Java الذي يتصل

    ((TextView) this.findviewbyid (r.id.str_my_string)).

  3. مورد strings.xml تحتوي

    u003Cstring name="my_string">عنصر نائبu003C/string>

في المشروع باستخدام المكتبة لدي

  1. مورد strings.xml تحتوي

    u003Cstring name="my_string">محتوى السلسلة الفعليu003C/string>

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

النظر في التطبيق الذي يستخدم المكتبة ، أنا فعل انظر اثنين R الملفات ، وكلاهما لديه R.string.my_string وكلاهما يساوي نفس القيمة الرقمية.

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

المحلول

لدي نفس الترتيب وهذا يعمل بالنسبة لي كما هو متوقع.

تحتوي المكتبة على تخطيط/فئة مع هذه الإشارة إلى موارد السلسلة:

<TextView android:id="@+id/studentSinceLabel">

توفر المكتبة قيمة افتراضية في Strings.xml:

<string name="studentSinceLabel">Student Since</string>

التطبيق الرئيسي لديه هذه القيمة في سلاسله. xml:

<string name="studentSinceLabel">Client Since</string>

عندما أقوم بتقديم قيمة لهذا المورد في سلاسل التطبيقات الرئيسية ".

يبدو أن هذا السلوك المتوقع يعتمد على قراءتي هنا:http://developer.android.com/tools/sdk/eclipse-adt.html

اقتباس ذي صلة من الرابط أعلاه:

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

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