تالار گفتمان nCIS.ir

نسخه‌ی کامل: کلمه this در فرگمنت
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام

کلمه کلیدی this داخل فرگمنت ها عمل نمی کنه و خطا می ده
مثلا


tts = new TextToSpeech(this, this);


راهکاری که تو فروم های خارجی دیدم اینکه اول
یه Context  تعریف کنیم بعد در متد  onCreate
مقدار به این صورت تغییر بدیم

 globalContext = this.getActivity();

و هر جا که لازم بود به جای this بنویسم  globalContext
این کارو انجام دادم باز خطا داد ، راه حل چیه ؟
اسم اکتیویتی رو اولش اضافه کنید. مثلاً ActivityMain.this
نه متاسفانه عمل نکرد فکر می کنم دلیلش برمی گرده به اینکه این فرگمنت ها به یه view pager متصل هستن
خوب یه کلاس Global از Application مشتق کنید و توی manifest در قسمت application بعنوان شئ برنامه معرفی کنید:
<application
    android:name=".Global"
   ... />

حالا توی همین کلاس یه فیلد public static Activity currentActivity تعریف کنید و توی onResume اکتیویتیهاتون بنویسید:
Global.currentActivity = this;

حالا همه جا میتونید از G.currentActivity.this استفاده کنید.
من هم از فرگمنت استفاده میکنم کافیه هرکجا نیاز به Context پیدا کردید به جای this از getActivity() استفاده کنید بعنوان مثال خط زیر که از داخل برنامه خودم کپی کردم
Toast.makeText(
				getActivity(),
				container.getResources()
						.getResourceEntryName(container.getId()),
				Toast.LENGTH_LONG).show();