How to get the Data from DialogFragment to MainActivity in Android?

前端 未结 4 624
自闭症患者
自闭症患者 2021-01-14 00:51

I create a application using DialogFragment.I want to get the Data from DialogFragment and setText in the MainActivity. I

4条回答
  •  忘掉有多难
    2021-01-14 01:31

    Create an interface like-

    CustomDialogInterface.java

    public interface CustomDialogInterface {
        
            // This is just a regular method so it can return something or
            // take arguments if you like.
        public void okButtonClicked(String  value);
    
        
    }
    

    and modify your MyAlert.java by-

    public class MyAlert extends DialogFragment implements OnClickListener {
    
    private EditText getEditText;
    MainActivity callBackActivity;
    CustomDialogInterface customDI;
    
    public MyAlert(CustomDialogInterface customDI)
    {
        this.customDI = customDI;
    }
    
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    
        callBackActivity = new MainActivity();
        getEditText = new EditText(getActivity());
        getEditText.setInputType(InputType.TYPE_CLASS_TEXT);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Get UserName :");
        builder.setMessage("Enter Your Name :");
        builder.setPositiveButton("Ok", this);
        builder.setNegativeButton("Cancel", null);
        builder.setView(getEditText);
        return builder.create();
    }
    
    @Override
    public void onClick(DialogInterface dialog, int which) {
        String value = getEditText.getText().toString();
        Log.d("Name : ", value);
        dialog.dismiss();
        customDI.okButtonClicked(value);
    
    
    }
    
    
    void setCustomDialogInterface(CustomDialogInterface customDialogInterface){
        this. customDI = customDialogInterface;
    c}
    
    }
    

    And implement CustomDialogInterface in your MainActivity and overide method okButtonClicked() When onClick will be called then your MainActivity's onButtonClicked will be called .

    and change showAlert to -

    class MainActivity..... implements CustomDialogInterface { 
            
            public void showMyAlert(View view) {
                 MyAlert myAlert = new MyAlert(this);
                 myAlert.show(getFragmentManager(), "My New Alert");
            }
            
            @Overide
            public void okButtonClicked(String  value){
                // handle 
            }
        }
    

    or use following code :

      public void showMyAlert(View view) {
    
         MyAlert myAlert = new MyAlert(this);
         myAlert.setCustomDialogInterface(new CustomDialogInterface() {
                @Override
                public void okButtonClicked(String value) {
                    //handle click
                }
            });
         myAlert.show(getFragmentManager(), "My New Alert");        
         
    }
    

提交回复
热议问题