تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ بهروز
پیاده سازی بدون cast در متد onAttach - به روش همون ریسایکلریو در کانستراکتور
پوریا شفیعی حل شده توسط پوریا شفیعی

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

 

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

 

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();
    }
}

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

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

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

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

عالی بود

بهترین پاسخ
پوریا شفیعی ۳۰ اردیبهشت ۱۴۰۰، ۱۵:۲۶