پیاده سازی بدون cast در متد onAttach - به روش همون ریسایکلریو در کانستراکتور

پرسیده شده
فعالیت 1081 روز پیش
دیده شده 357 بار
4

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

 

کد کلاس دیالوگ :

 

public class DialogFrag extends DialogFragment {

   private MyDialogEventListener myDialogEventListener;

    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);
//        myDialogEventListener = (MyDialogEventListener) context;
    }

   public DialogFrag(MyDialogEventListener myDialogEventListener){
        this.myDialogEventListener = myDialogEventListener;

    }

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        View view = LayoutInflater.from(getContext()).inflate(R.layout.my_dialog,null,false);
        builder.setView(view);

        Button btnOk = view.findViewById(R.id.btn_dialog_success);
        Button btnCancel = view.findViewById(R.id.btn_dialog_concel);
        EditText et_showDialogMain = view.findViewById(R.id.et_dialog_showDialogMain);
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (et_showDialogMain.getText().length()>0){
                    myDialogEventListener.onClickOk(et_showDialogMain.getText().toString());
                    dismiss();
                }else {
                    et_showDialogMain.setError("Fill in the input");
                }


            }
        });

        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myDialogEventListener.onClickCancel();
                dismiss();

            }
        });
        return builder.create();
    }
}

  کد کلاس مین :


public class MainDialogActivity extends AppCompatActivity implements MyDialogEventListener{

    private TextView tvShowDialogMain;
    private  Button btnShow;
    private DialogFrag dialogFrag = new DialogFrag(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog_main);

        btnShow = findViewById(R.id.btn_main_fragmentDialog);
        tvShowDialogMain = findViewById(R.id.tv_mainDialog_showReturnDialog);
        btnShow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                dialogFrag.setCancelable(false);
                dialogFrag.show(getSupportFragmentManager(),null);

            }
        });

    }

    @Override
    public void onClickOk(String data) {

        tvShowDialogMain.setText(data);
    }

    @Override
    public void onClickCancel() {
        tvShowDialogMain.setText("No Name");
//        finish();
    }
}

  این نمونه دیگه پیاده سازی بدون کست در متد خود دیالوگ

                                        اگه اشکالی و سوالی بود خوشحال میشم نظرتون رو بگین                                         

فایل پیوست

بهروز البرزی
بهروز البرزی

30 اردیبهشت 00

0
حذف شده

سلام بهروز جان 

ممنون تجربه ات رو به اشتراک گذاشتی 

عالی بود

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

30 اردیبهشت 00

حذف شده
سلام پوریا جان خواهش میکنم میگم من ازمون فرگمنت رو دادم و از 15 سوال 11 رو درست جواب دادم در صورتی که وقتی چک کردم دیدم از 4 تا سوال اشتباه دوتا سوال رو مطمئن بودم درست زدم و میخواستم بگم بنظرم باگ داره جواب ها ؟
بهروز البرزی

30 اردیبهشت 00

حذف شده
بهروز جان کدوم سوالات رو حس میکنی درست بوده و ممنون میشم دلیلشم برام بنویسی تا بررسی کنم
پوریا شفیعی

30 اردیبهشت 00

حذف شده
مثلا من دیگه lifecycle فرگمنت رو درست زدم سه گزینه بودش فقط newInstance اشتباه بودش که این واسه من زدش جواب منو همون زینه newInstance خودم خندم گرفت D: - مورد دومم هم ساختن رابط باتم شیت در کدام متد استفاده میشه من درست زدم و اون واسم زده onViewCreate ؟ بلاخره نمیدونم چرا عوض شدش گزینه ها ؟
بهروز البرزی

30 اردیبهشت 00

حذف شده
واقعا؟ من الان بررسی کردم مشکلی وجود نداشت اما باز هم به پشتیبانی منتقل میکنم تا بررسی کنن
پوریا شفیعی

31 اردیبهشت 00