نمایش نتایج 1 تا 11 از 11

نام تاپیک: جایگزین کلمه کلیدی this در فرگمنت ها

  1. #1

    جایگزین کلمه کلیدی this در فرگمنت ها

    سلام



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

    مثلا







    tts = new TextToSpeech(this, this);











    راهکاری که تو فروم های خارجی دیدم اینکه اول

    یه Context تعریف کنیم بعد در متد onCreate

    مقدار به این صورت تغییر بدیم





    globalContext = this.getActivity();








    و هر جا که لازم بود به جای this بنویسم globalContext

    این کارو انجام دادم باز خطا داد ، راه حل چیه ؟

  2. #2
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    توی هر فرگمنت یکسره بجای this بنویس getActivity() و خلاص

  3. #3

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    نقل قول نوشته شده توسط hosseinaryai مشاهده تاپیک
    توی هر فرگمنت یکسره بجای this بنویس getActivity() و خلاص
    getActivity تنها نه. درستش اینه

    Activity thisActivity = FRAGMENTNAME.this.getActivity();

  4. #4
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    getActivity تنها نه. درستش اینه

    Activity thisActivity = FRAGMENTNAME.this.getActivity();
    میشه یکم بیشتر توضیح بدی .. من الان تقریبن یک سال و نیمه دارم می زنم getActivity خالی و حتا یکبار هم ارور نگرفته .. خب منطقی هم هست ، getActivity داره ارجاش میده به اکتیویتی مادری که این فرگمنت روشه ..
    دستوری که نوشتی چه مزیتی اضافی ای داره ؟

  5. #5
    کاربر دائمی آواتار NeoFighT
    تاریخ عضویت
    دی 1391
    محل زندگی
    teh
    پست
    295

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    نقل قول نوشته شده توسط hosseinaryai مشاهده تاپیک
    میشه یکم بیشتر توضیح بدی .. من الان تقریبن یک سال و نیمه دارم می زنم getActivity خالی و حتا یکبار هم ارور نگرفته .. خب منطقی هم هست ، getActivity داره ارجاش میده به اکتیویتی مادری که این فرگمنت روشه ..
    دستوری که نوشتی چه مزیتی اضافی ای داره ؟
    در بسیاری جاها هیچ فرقی با هم ندارن ، فرقشون رو با مثال زیر متوجه میشید :

    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // this.getActivity(); does not work
    FragmentDrawer.this.getActivity();
    }
    });

    مثلا ، داخل onClickListener شما نمیتونید از this.getActivity استفاده کنید و حتما باید قبل this ، اسم فرگمنتتون رو بنویسید .

  6. #6
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    نقل قول نوشته شده توسط NeoFighT مشاهده تاپیک
    در بسیاری جاها هیچ فرقی با هم ندارن ، فرقشون رو با مثال زیر متوجه میشید :

    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    // this.getActivity(); does not work
    FragmentDrawer.this.getActivity();
    }
    });

    مثلا ، داخل onClickListener شما نمیتونید از this.getActivity استفاده کنید و حتما باید قبل this ، اسم فرگمنتتون رو بنویسید .
    خب موضوع اینجاست ، من اصلن از کلمه ی this استفاده نمی کنم .. فقط getActivity .. همه جا هم جوابگو بوده واسم ..

  7. #7
    کاربر دائمی آواتار NeoFighT
    تاریخ عضویت
    دی 1391
    محل زندگی
    teh
    پست
    295

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    نقل قول نوشته شده توسط hosseinaryai مشاهده تاپیک
    خب موضوع اینجاست ، من اصلن از کلمه ی this استفاده نمی کنم .. فقط getActivity .. همه جا هم جوابگو بوده واسم ..
    بازم فرقش تو مثالی که گفتم مشخص میشه ، وگرنه جاهای دیگه هیچ فرقی ندارن ،
    شما مثال من رو تو برنامت پیاده کن متوجه میشی.

  8. #8

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    با احترام و تشکر ویژه از دوستان متاسفانه هیچ کدوم از کدوم هایی که گفتین کار نکرد ، فکر کنم دلیلش اینکه این فرگمنت ها به یه ViewPager
    مرتبط هستن ، البته فکر نکنین این کدو فقط داخل همین متد تست کردم ، تو قسمت های دیگه مثل لیسنر و .. همین داستانه

    1.jpg

    2.jpg

    3.png


    4.jpg

  9. #9
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    با این که تاپیک خیلی قدیمی هست و چون این مشکل دوستمون هم مثل من هستش و هنوز رفع نشده در ادامه همین تاپیک سوال رو مطرح میکنم


    دوستان برای حل این مشکل باید چیکار کرد ؟ این دستور رو داخل کلاس اداپتور نوشتم.







    اینم کل کدهای کلاس اداپتور :




    import android.content.Context;
    import android.speech.tts.TextToSpeech;
    import android.support.annotation.NonNull;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    import android.widget.Toast;


    import java.util.List;
    import java.util.Locale;


    import io.github.meness.Library.Utils.IntentUtility;


    public class adapter extends RecyclerView.Adapter<adapter.db_viewholder> {


    List<civil> dic;
    Context mContext;


    public adapter(List<civil> dic, Context mContext) {
    this.dic = dic;
    this.mContext = mContext;
    }


    @NonNull
    @Override
    public db_viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {


    View view = LayoutInflater.from(parent.getContext()).inflate(R .layout.list_items,parent,false);
    return new db_viewholder(view);
    }


    @Override
    public void onBindViewHolder(@NonNull db_viewholder holder,final int position) {


    civil civil = dic.get(position);
    holder.txt_word.setText(civil.getWord());
    holder.txt_meaning.setText(civil.getMeaning());


    final String word = holder.txt_word.getText().toString();




    holder.btn_volume.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {


    TextToSpeech tts = new TextToSpeech(mContext,mContext);
    tts.setLanguage(Locale.US);
    tts.speak(word, TextToSpeech.QUEUE_ADD, null);


    }
    });






    }


    @Override
    public int getItemCount() {
    return dic.size();
    }


    public class db_viewholder extends RecyclerView.ViewHolder {


    public TextView txt_word;
    public TextView txt_meaning;
    public RelativeLayout relativeLayout;
    public Button btn_share;
    public Button btn_copy;
    public Button btn_volume;


    public db_viewholder(View itemView) {
    super(itemView);
    txt_word=itemView.findViewById(R.id.txt_word);
    txt_meaning=itemView.findViewById(R.id.txt_meaning );
    txt_word.setTypeface(font.face);
    txt_meaning.setTypeface(font.face);
    relativeLayout=itemView.findViewById(R.id.relative Layout);
    btn_share=itemView.findViewById(R.id.btn_share);
    btn_copy=itemView.findViewById(R.id.btn_copy);
    btn_volume=itemView.findViewById(R.id.btn_volume);
    }










    }


    public void clear() {
    final int size = dic.size();
    dic.clear();
    notifyItemRangeRemoved(0, size);
    }
    }




  10. #10
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    دوستان در مورد این مشکل راهنمایی نمیکنید

  11. #11
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: جایگزین کلمه کلیدی this در فرگمنت ها

    اگه توضیحات Constructor کلاس TextToSpeech رو ببینید، که عکس دومی هست که تو پست قبل گذاشتید، می‌بینید که توضیح داده که پارامتر اول از جنس Context باید باشه و پارامتر دوم از جنس OnInitListener.
    برای پارامتر اول، وقتی در فرگمنت هستید با استفاده از متد getActivity می‌تونید به Context دسترسی پیدا کنید. اما برای پارامتر دوم باید یک Instance از اینترفیس OnInitListener بهش بدید.


    TextToSpeech tts = new TextToSpeech(getActivity(), new TextToSpeech.OnInitListener() {
    @Override
    public void onInit(int i) {

    }
    });


    ضمن اینکه بهتره در متد onBindViewHolder کار زیادی انجام ندید و onClickListener رو هم به کلاس db_viwholder منتقل کنید.

تاپیک های مشابه

  1. سوال: چگونه توسط ASP در #C یک تست چهار گزینه ای بسازیم؟
    نوشته شده توسط Black Shadow در بخش C#‎‎
    پاسخ: 4
    آخرین پست: دوشنبه 16 اردیبهشت 1392, 14:32 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 17 اسفند 1389, 07:16 صبح
  3. پاسخ: 1
    آخرین پست: دوشنبه 25 بهمن 1389, 10:21 صبح
  4. پاسخ: 3
    آخرین پست: پنج شنبه 04 تیر 1388, 21:35 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •