2013-01-14 35 views
2

在我的MainActivity中,我生成DialogAlert,其中有2 EditText s。 我想在MainActivity中恢復我的EditText,當我點擊DialogAlert中的正面按鈕Android - 從AlertDialog傳遞參數到AlertDialog'host

這裏我DialogAlert類:

public class ShareDialog extends DialogFragment{ 

    public interface ShareDialogListener { 
     public void onDialogPositiveClick(DialogFragment dialog); 
     public void onDialogNegativeClick(DialogFragment dialog); 
    } 

    ShareDialogListener mListener; 
    private Handler mResponseHandler; 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mListener = (ShareDialogListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement ShareDialogListener"); 
     } 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

     LayoutInflater inflater = getActivity().getLayoutInflater(); 

     View v = inflater.inflate(R.layout.dialog_share, null); 
     final EditText name_place = (EditText)v.findViewById(R.id.sharePlaceName); 
     final EditText description_place = (EditText)v.findViewById(R.id.shareDescription); 
     builder.setView(v) 
       .setTitle(R.string.shareTitle) 
       .setPositiveButton(R.string.share, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 
         String name = name_place.getText().toString(); 
         String description = description_place.getText().toString(); 
         mListener.onDialogPositiveClick(ShareDialog.this); 

        } 
       }) 
       .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         mListener.onDialogNegativeClick(ShareDialog.this); 
         ShareDialog.this.getDialog().cancel(); 
        } 
       });  
     return builder.create(); 
} 

}

MainActivity實現ShareDialog.ShareDialogListener

在我MainActivity我:

public void onClickShare(View v) { 
     // Create an instance of the dialog fragment and show it 
     DialogFragment dialog = new ShareDialog(); 
     dialog.show(getSupportFragmentManager(), "ShareDialog"); 
    } 

    public void onDialogPositiveClick(DialogFragment dialog) { 
     Toast.makeText(this, "Position Shared", Toast.LENGTH_SHORT).show(); 

    } 

    public void onDialogNegativeClick(DialogFragment dialog) { 
     Toast.makeText(this, "Cancel Share", Toast.LENGTH_SHORT).show(); 

    } 

當我單擊DialogAlert中的正按鈕時,我有一個Toast「位置共享」。

我想從MainActivity我PARAMS的方法onDialogPositiveClick()恢復在我DialogAlert

回答

3

創建描述只需修改onDialogPositiveClick方法提供PARAMS:

public interface ShareDialogListener { 
    public void onDialogPositiveClick(DialogFragment dialog, String name, String description); 
    public void onDialogNegativeClick(DialogFragment dialog); 
} 

在您的提醒:

mListener.onDialogPositiveClick(ShareDialog.this, name_place.getText(), description_place.getText()); 

並在您的活動:

public void onDialogPositiveClick(DialogFragment dialog, String name, String description) { 
    Toast.makeText(this, "Position Shared: " + name + ", " + description, Toast.LENGTH_SHORT).show(); 

} 
+0

謝謝,它的作品很好! – ErWaN