سؤال

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

تكمن المشكلة في أنه إذا قمت بإضافة خيارات للنشاط ، فإن OptionsMenu تظهر في كل علامة تبويب. حاولت التحقق من التيار mtabhost.getcurrenttabtag () في ال onCreateOptionSmenu لكن هذا لم يغير شيئًا. حتى كيف نفعل ذلك؟

(الرمز التالي ، الذي لا يزال يعرض الخيارات في كل علامة تبويب)

 public boolean onCreateOptionsMenu(Menu menu) {    
  if(mTabHost.getCurrentTabTag()==getString(R.string.tab_details)) {
   boolean result = super.onCreateOptionsMenu(menu);
   menu.add(0, EDIT_ID, 0, R.string.menu_edit).setIcon(R.drawable.edit);
   return result;
  }    

  return true;
 }

 public boolean onMenuItemSelected(int featureId, MenuItem item) {
  switch (item.getItemId()) {
       case EDIT_ID: {   
        Toast.makeText(this, "o.O", Toast.LENGTH_LONG).show();   
       }
  }

  return super.onMenuItemSelected(featureId, item);
 } 
هل كانت مفيدة؟

المحلول

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

إذا كنت ترغب في تغيير قائمة الخيارات في كل مرة يتم فيها فتحها ، فيجب عليك تجاوز onprepareoptionsmenu ()

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