رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کلمه this در فرگمنت
#1
سلام

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


tts = new TextToSpeech(this, this);


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

 globalContext = this.getActivity();

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

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

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




کاربران در حال بازدید این موضوع: 2 مهمان