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

前端 未结 4 575
自闭症患者
自闭症患者 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:30

            you can achieve this using a interface,by sending your data from a fragment to main activity,below i have edited your complete code and its working fine....
           Here is the code with example
            Your Main Activity
            package com.example.dialogfragment;
    
            import android.annotation.TargetApi;
            import android.app.Activity;
            import android.os.Build;
            import android.os.Bundle;
            import android.view.View;
            import android.widget.Button;
            import android.widget.TextView;
    
            @TargetApi(Build.VERSION_CODES.HONEYCOMB)
            public class MainActivity extends Activity  implements SetName{
                Button showDialog;
                TextView showText;
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                    showDialog = (Button)findViewById(R.id.button1);
                    showText = (TextView)findViewById(R.id.textView2);
                    showDialog.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            showMyAlert(v);
                        }
                    });
                }
    
                public void showMyAlert(View view) {
                    MyAlert myAlert = new MyAlert();
                    myAlert.show(getFragmentManager(), "My New Alert");
                }
    
                public void setMyNameStr(String myNameStr) {
    
                }
    
    
                @Override
                public void setMyName(String string) {
                    // TODO Auto-generated method stub
    
                    showText.setText(string);
    
                }
    
            }
    
        Your Alert
        import android.annotation.TargetApi;
        import android.app.Activity;
        import android.app.AlertDialog;
        import android.app.Dialog;
        import android.app.DialogFragment;
        import android.content.DialogInterface;
        import android.content.DialogInterface.OnClickListener;
        import android.os.Build;
        import android.os.Bundle;
        import android.text.InputType;
        import android.util.Log;
        import android.widget.EditText;
    
        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        public class MyAlert extends DialogFragment implements OnClickListener {
    
            private EditText getEditText;
            MainActivity callBackActivity;
            SetName setname;
    
            @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 onAttach(Activity a) {
                super.onAttach(a);
                setname = (SetName) a;
            }
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String value = getEditText.getText().toString();
                Log.d("Name : ", value);
                // MainActivity mainActivity = new MainActivity();
                setname .setMyName(value);
                //setname = (SetName)
                // setname = (SetName)getActivity();
                dialog.dismiss();
            }
    
    
        }
    
    Create a Interface
    
    public interface SetName {
    
    
        void setMyName(String string);
    
    }
    
    
    Now what you should do is create onAttach in your alertFragment and call your interface..
    

提交回复
热议问题