0

I have two fragment (AddAddressFragment,AddressFragment) and one DialogFragment. In my app i show alert box with radio button. If user choose anyone option, i want to pass that item to two fragment(AddressFragment and also AddAddressFragment). I can passed only one fragment(AddressFragment). How to pass the same value to another fragment(AddAddressFragment). I want to make list view in that AddAddressFragment

My code here:

RadioListAlert.java:

public class RadioListAlert extends DialogFragment {

    CharSequence[] tag = { "Home", "Office", "Pg", "Others" };
    private AddressListener addressListener;
    private String itemClicked;


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setCancelable(true);
        builder.setTitle("Please Tag Your Address").setSingleChoiceItems(tag, -1,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Toast.makeText(getActivity(), tag[which],Toast.LENGTH_SHORT).show();
                        itemClicked = (String) tag[which];
                    }
                }).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                if (addressListener != null)
                    addressListener.itemClicked(itemClicked);
                //to dismiss the dialog after user choose an item and click ok, you can also add some validation before dismissing the dialog
                dismiss();
            }
        }).setNegativeButton("Cancel",new DialogInterface.OnClickListener(){

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dismiss();
            }
        });
        return builder.create();
    }

    public void setListener(AddressListener addressListener)
    {
        this.addressListener = addressListener;
    }




   public interface AddressListener
    {
        void itemClicked(String text);
    }
}

AddressFragment.java:

public class AddressFragment extends Fragment implements RadioListAlert.AddressListener {

    int position = 0;

    EditText line1;
    EditText line2;
    EditText landmark;
    AutoCompleteTextView cityText;
    EditText zipcode;
    Spinner country;
    Spinner state;
    RadioGroup tag;
    Button savaddr;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_layout_address, container, false);

        savaddr = (Button) view.findViewById(R.id.addrsave);
        tag = (RadioGroup) view.findViewById(R.id.radioGroup);
        line1 = (EditText) view.findViewById(R.id.line1);
        line2 = (EditText) view.findViewById(R.id.line2);
        cityText = (AutoCompleteTextView) view.findViewById(R.id.city_autoCompleteTextView);
        zipcode = (EditText) view.findViewById(R.id.zipcode);
        country = (Spinner) view.findViewById(R.id.countrySpinner);
        state = (Spinner) view.findViewById(R.id.stateSpinner);
        landmark = (EditText) view.findViewById(R.id.landmark);



        // Get a reference to the AutoCompleteTextView in the layout
        AutoCompleteTextView textView = (AutoCompleteTextView) view.findViewById(R.id.city_autoCompleteTextView);
        // Get the string array
        String[] city = getResources().getStringArray(R.array.city);
        // Create the adapter and set it to the AutoCompleteTextView
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, city);

        textView.setAdapter(adapter);


        savaddr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String addr1 = line1.getText().toString();
                String addr2 = line2.getText().toString();
                String addr_city = cityText.getText().toString();
                String addr_zipcode = zipcode.getText().toString();
                String addr_country = country.getSelectedItem().toString();
                String addr_state = state.getSelectedItem().toString();

                //Field Validation

                if (Utility.isNotNull(addr1) && Utility.isNotNull(addr2) && Utility.isNotNull(addr_city) && Utility.isNotNull(addr_zipcode) && Utility.isNotNull(addr_country) && Utility.isNotNull(addr_state)) {
                    if (Utility.line2_validate(addr2)) {
                        if (Utility.line2_validate(addr_city)) {

                            //Show alert box with radio button option
                            RadioListAlert objRadioListAlert=new RadioListAlert();
                            objRadioListAlert.setListener(AddressFragment .this);
                            objRadioListAlert.show(getActivity().getFragmentManager(), "Radio Alert");
                            Toast.makeText(getActivity().getApplicationContext(), "Success.", Toast.LENGTH_SHORT).show();

                        } else {
                            cityText.setError("Enter valid City");
                        }
                    } else {
                        line2.setError("Enter valid Address");
                    }
                } else {
                    Toast.makeText(getActivity().getApplicationContext(), "Please fill the form, don't leave any field blank", Toast.LENGTH_SHORT).show();
                }
            }
        });


        return view;

    }


    @Override
    public void itemClicked(String text) {
      

        ((AccountActivity) getActivity()).navigatetoAddAddressActivity(text);
    }
}

AddAddressFragment.java:

public class AddAddressFragment extends Fragment implements RadioListAlert.AddressListener {

    ImageView add;
    ListView addressListView;
    private ArrayList<String> strArr;
    private ArrayAdapter<String> adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_layout_add_address, container,
                false);

        addressListView = (ListView) view.findViewById(R.id.address_list);



        add = (ImageView)view.findViewById(R.id.add_address);

        add.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                //((AccountActivity) getActivity()).navigatetoAddAddressActivity();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                AddressFragment fragment = new AddressFragment();
                transaction.replace(R.id.account_frame, fragment);
                transaction.commit();
            }
        });


        return view;
    }
    @Override
    public void itemClicked(String text) {
        Log.d("Welcome","Its worked");
        Toast.makeText(getActivity().getApplicationContext(), "Item Clicked:" + text, Toast.LENGTH_SHORT).show();

        strArr = new ArrayList<String>();
        for (int i = 0; i < 2; i++) {
            strArr.add(text + i);
            adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                    android.R.layout.simple_list_item_1, strArr);
            addressListView.setAdapter(adapter);
        }




    }
}

Please anyone help me!!

Thanks in advance!!!

Razul
  • 99
  • 1
  • 12

1 Answers1

0

You can use localbroadcast to send data between fragments this is also handy when you want to send data from service to fragment or activity how to use LocalBroadcastManager?

Community
  • 1
  • 1