2017-08-13 51 views
0

所以这是我的对话框类:如何从对话框类值传递给它的主机

public class SecondActivity extends DialogFragment { 

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

     builder.setView(inflater.inflate(R.layout.second, null)) 
       .setPositiveButton("Save", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 

        } 
       }) 
       .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dismiss(); 
        } 
       }); 
     return builder.create(); 
    } 
} 

在我的对话有哪些得到2串2个编辑文本。如果用户按下保存按钮,我想在MainActivity中使用这两个字符串。我怎么做?

+0

使用getActivity()返回什么您的主机活动实例。如果在MainActivity中有一个方法setString1(...),可能((MainActivity)getActivity())。setString1(“text”)。 –

+0

这可能有所帮助:https://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents –

回答

0

的充气方法返回一个视图,您可以执行findViewById,如下所示:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    View v = inflater.inflate(R.layout.second, null); 
    EditView editView = (EditView)v.findById(R.id.your_edit_view); 
    builder.setView(v) 
      .setPositiveButton("Save", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 

       } 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dismiss(); 
       } 
      }); 
    return builder.create(); 
}