Send data from activity to fragment in Android

前端 未结 20 3192
悲哀的现实
悲哀的现实 2020-11-21 05:13

I have two classes. First is activity, second is a fragment where I have some EditText. In activity I have a subclass with async-task and in method doInBa

20条回答
  •  深忆病人
    2020-11-21 05:13

    Use following interface to communicate between activity and fragment

    public interface BundleListener {
        void update(Bundle bundle);
        Bundle getBundle();
    }
    

    Or use following this generic listener for two way communication using interface

     /**
     * Created by Qamar4P on 10/11/2017.
     */
    public interface GenericConnector {
        T getData();
        void updateData(E data);
        void connect(GenericConnector connector);
    }
    

    fragment show method

    public static void show(AppCompatActivity activity) {
            CustomValueDialogFragment dialog = new CustomValueDialogFragment();
            dialog.connector = (GenericConnector) activity;
            dialog.show(activity.getSupportFragmentManager(),"CustomValueDialogFragment");
        }
    

    you can cast your context to GenericConnector in onAttach(Context) too

    in your activity

    CustomValueDialogFragment.show(this);
    

    in your fragment

    ...
    @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            connector.connect(new GenericConnector() {
                @Override
                public Object getData() {
                    return null;
                }
    
                @Override
                public void updateData(Object data) {
    
                }
    
                @Override
                public void connect(GenericConnector connector) {
    
                }
            });
        }
    ...
        public static void show(AppCompatActivity activity, GenericConnector connector) {
                CustomValueDialogFragment dialog = new CustomValueDialogFragment();
                dialog.connector = connector;
                dialog.show(activity.getSupportFragmentManager(),"CustomValueDialogFragment");
            }
    

    Note: Never use it like "".toString().toString().toString(); way.

提交回复
热议问题