javaandroidandroid-fragmentscustomdialog

How can i pass data from custom dialog box to Fragment in android studio using java?


I am new to android studio and Java. I have create custom dialog box with input textbox. I want to pass data from custom dialog to fragment layout. How can I achieve that ?

I saw this post but didn't get it. Please help me out !

Passing a data from Dialog to Fragment in android

Edited

Here's my code >>

public class IncomeFragment extends Fragment{
    TextView title, textRsTotal;
    Dialog dialog;
    int total = 0;

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        title = view.findViewById(R.id.totalIncomeTitle);
        Button button = view.findViewById(R.id.addIncomeBtn);
        textRsTotal = view.findViewById(R.id.totalExpenseTitle);


        dialog = new Dialog(getActivity());

        if (getActivity() != null) {
            if (!CheckInternet.isNetworkAvailable(getActivity())) {
                //show no internet connection !
            }
        }

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.setContentView(R.layout.income_custom_dialog);
                dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
                dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);

                RadioGroup radioGroup = dialog.findViewById(R.id.radioGroup);
                Button buttonAdd = dialog.findViewById(R.id.addBtn);
                TextInputEditText editText = dialog.findViewById(R.id.editText);

                radioGroup.clearCheck();
                radioGroup.animate();
                radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
                        RadioButton radioButton = (RadioButton) radioGroup.findViewById(checkedId);
                    }
                });
                buttonAdd.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        int selectedId = radioGroup.getCheckedRadioButtonId();
                        if (selectedId == -1) {
                            Toast.makeText(getActivity(), "Please select your income type", Toast.LENGTH_SHORT).show();
                        } else {
                            RadioButton radioButton = (RadioButton) radioGroup.findViewById(selectedId);
                            String getIncome = editText.getText().toString();
                            Toast.makeText(getActivity(), radioButton.getText() + " is selected & total is Rs."+ total, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                dialog.show();

            }
        });

        super.onViewCreated(view, savedInstanceState);
    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_income, container, false);


        // Inflate the layout for this fragment
        return view;
    }
}

Solution

  • Ok, try this :

    public class IncomeFragment extends Fragment {
        TextView title, textRsTotal;
        Dialog dialog;
        int total = 0;
    
        @Override
        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
            title = view.findViewById(R.id.totalIncomeTitle);
            Button button = view.findViewById(R.id.addIncomeBtn);
            textRsTotal = view.findViewById(R.id.totalExpenseTitle);
    
    
            dialog = new Dialog(getActivity());
    
            if (getActivity() != null) {
                if (!CheckInternet.isNetworkAvailable(getActivity())) {
                    //show no internet connection !
                }
            }
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showDialog(new MyCallback() {
                        @Override
                        public void setText(String text) {
                            textRsTotal.setText(text);
                        }
                    });
                }
            });
    
            super.onViewCreated(view, savedInstanceState);
        }
    
        private void showDialog(MyCallback myCallback) {
            dialog.setContentView(R.layout.income_custom_dialog);
            dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
            dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
    
            RadioGroup radioGroup = dialog.findViewById(R.id.radioGroup);
            Button buttonAdd = dialog.findViewById(R.id.addBtn);
            TextInputEditText editText = dialog.findViewById(R.id.editText);
    
            radioGroup.clearCheck();
            radioGroup.animate();
            radioGroup.setOnCheckedChangeListener((radioGroup1, checkedId) -> {
                RadioButton radioButton = (RadioButton) radioGroup1.findViewById(checkedId);
            });
            buttonAdd.setOnClickListener(view1 -> {
                int selectedId = radioGroup.getCheckedRadioButtonId();
                if (selectedId == -1) {
                    Toast.makeText(getActivity(), "Please select your income type", Toast.LENGTH_SHORT).show();
                } else {
                    RadioButton radioButton = (RadioButton) radioGroup.findViewById(selectedId);
                    String getIncome = editText.getText().toString();
                    myCallback.setText(getIncome);
                    Toast.makeText(getActivity(), radioButton.getText() + " is selected & total is Rs." + total, Toast.LENGTH_SHORT).show();
                }
            });
            dialog.show();
    
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_income, container, false);
            return view;
        }
    
        public interface MyCallback {
            void setText(String text);
        }
    }