Android: كيفية الحصول على قائمة مشتركة في كل نشاط (قائمة) دون إعادة كتابة أساليب تجاوز؟

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

سؤال

أعلم أن Android يوفر بعض الأساليب المفيدة التي يجب تجاوزها من أجل تحديد قائمة:

    @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  menu.add(0, AIS, 0, "Activity Inventory Sheet").setIcon(android.R.drawable.ic_menu_upload);
                // ...
  return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
  Intent i;
     switch (item.getItemId()) {
     case AIS: i = new Intent(this, ActivityInventorySheet.class);
      startActivity(i);
               return true;
     // ...
     }
     return false;
 }

أود الحصول على هذه القائمة التي يتم مشاركتها من قبل كل نشاط وسريعة تطبيق Android الخاص بي. هذا للحصول على قائمة قياسية في كل نشاط (قائمة) يتيح للمستخدم القفز إلى كل جزء من التطبيق ضمن نقرة.

في الوقت الحالي، أسهل طريقة لتحقيق ذلك هو نسخ الطرق والصقها في كل نشاط (قائمة) للتطبيق. أنا لا أحب التكرار من التعليمات البرمجية المكتوبة :)

هل الطبقات الفرعية خيار معقول؟ لقد رأيت بالفعل أن الطبقة الفرعية واحدة من قوتي لا تعمل بشكل جيد للغاية (الخيوط التي تسترجع الكائنات من قاعدة البيانات تعطي مشاكل). هل هناك طرق أخرى لتبادل قائمة على الرغم من الأنشطة؟

شكرا

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

المحلول

لا أرى أي سبب من ذلك لن يعمل تماما:

public abstract class MyListActivity extends ListActivity
{
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      menu.add(0, AIS, 0, "Activity Inventory Sheet").setIcon(android.R.drawable.ic_menu_upload);
      // ...
      return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      Intent i;
      switch (item.getItemId()) {
          case AIS: i = new Intent(this, ActivityInventorySheet.class);
          startActivity(i);
          return true;
          // ...
      }
      return false;
   }    
}

ثم فقط لديك أنشطتك تمتد النشاطية الخاصة بك بدلا من العقاصيات.

لقد رأيت بالفعل أن الطبقة الفرعية واحدة من قوتي لا تعمل بشكل جيد للغاية (الخيوط التي تسترجع الكائنات من قاعدة البيانات تعطي مشاكل).

هذا يبدو وكأنه مشكلة مختلفة تماما. قد ترغب في نشر سؤال منفصل فيما يتعلق بهذا. ما عليك سوى تمديد الفصل في جافا لا ينبغي أن يخلق أي مشاكل مثل التي تصفها.

نصائح أخرى

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

شيء مثل

class SharedMenu {
    public static void onCreateOptionsMenu(Menu menu) {
        menu.add(...);
        menu.add(...);
    }
}

public class MyActivity extends Activity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu.add(...);  // specific to this activity
        SharedMenu.onCreateOptionsMenu(menu);
        return true;
    }

}

مع المزيد من الطرق ل onMenuItemSelected إلخ.

تحرير: أنا لا أستخدم فئة أساسية مشتركة لأنني أحتاج إلى اثنين منهم للبدء، واحدة للأنشطة وأخرى أخرى لأنشطة القائمة، ثم في حالتي أحتاج إلى إضافة خيارات قائمة مخصصة في بعض الأنشطة.

لقد أضفت فقط ميزة ل greendroid. لإدارة ذلك. يمكن أن تكون مفيدة جدا، والتحقق من ذلك. سأحاول نشر مثال لاحقا.

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