سؤال

أنا أستخدم هذه الفئة A التي تمتد إلى فئة مجردة أخرى (وتمتد هذه الفئة المجردة إلى FragmentActivity) وفي إحدى وظيفتي في الفصل A أريد الحصول على getActivity() لنشاطي الحالي A.ولكن عندما أستخدم getActivity، يظهر لي خطأ أن طريقة getActivity() ليست نوعًا محددًا لفصلي.الرجاء مساعدتي !!كيف يمكنني تحقيق ذلك؟؟

الكود الخاص بصفي أ

 public class A extends B
 {
  protected void onCreate(Bundle savedInstanceState) 
   {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.voicing);

    //doing another initializations and stuff//

   }
  }

كود للفئة ب

   public abstract class B extends FragmentActivity 
  {


   FragmentAdapter mAdapter;
   ViewPager mPager;
   PageIndicator mIndicator;


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

المحلول

أ FragmentActivity هو مثال على Activity (بأسلوب جافا: FragmentActivity extends Activity).

لذلك ليس هناك نقطة الدعوة getActivity لأن أ FragmentActivity هو بالفعل Acivity, ، لذا فقط اتصل/استخدم this سيعمل.كما لا توجد طريقة تسمى getActivity في ال FragmentActivity فصل.وبعبارة أخرى، فإن فصلك B يمتد Activity مثال.

لذا، داخل الفصل A (أو B) الخاص بك، يمكنك استخدام مقتطف الكود هذا للحصول على مثيل النشاط:

Activity test = (Activity) this;

ولكن إذا امتدت فئة B الخاصة بك Fragment ثم getActivity كان من الممكن أن تنجح المكالمة.

نصائح أخرى

FragmentActivity هو بديل ل Activity في حزمة الدعم.منذ الخاص بك class B يمتد FragmentActivity وبعد ذلك الخاص بك class A يمتد class B, ، لذلك الخاص بك class A ويشير أيضا Activity (الملقب ب FragmentActivity).

باختصار، لا تحتاج إلى استدعاء أي طريقة.ببساطة استخدم this الكلمة الأساسية للإشارة إلى مثيل نشاطك.

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