title: Implement DialogFragment interface in OnClickListener
body: <p>I need to build a DialogFragment which returns user input from the dialog to an activity.
  The dialog needs to be called in an OnClickListener which gets called when an element in a listview gets clicked.<br>
  The return value of the DialogFragment (the input of the user) should be directly available in the OnClickListener in the activity.</p>
  
  <p>I tried to implement this by sticking to the official docs: <a href="http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents" rel="nofollow">http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents</a></p>
  
  <p>I need something like the following which doesn't work since I don't know how to make the anonymous OnClickListener implement the interface of the CustomNumberPicker class.<br>
  As far as I know implementing the interface is necessary in order to get data from the DialogFragment back to the Activity.</p>
  
  <p>Main Activity:</p>
  
  <pre><code>public class MainAcitivity extends ActionBarActivity {
      [...]
  
      // ArrayAdapter of the Listview
      private class ListViewArrayAdapter extends ArrayAdapter&lt;Exercise&gt; {
          public ListViewArrayAdapter(Context context, ArrayList&lt;Exercise&gt; exercises) {
              super(context, 0, exercises);
          }
  
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
              [...]
  
              if (convertView == null) {
                  convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_workoutdetail, parent, false);
              }
  
              TextView tvSets = (TextView) convertView.findViewById(R.id.tvWorkoutExerciseSets);
              tvSets.setText(sets.toString());
  
              // OnClickListener for every element in the ListView
              tvSets.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      // This is where the Dialog should be called and
                      // the user input from the Dialog should be returned
                      DialogFragment numberpicker = new CustomNumberPicker();
                      numberpicker.show(MainActivity.this.getSupportFragmentManager(), "NoticeDialogFragment");
                  }
  
                  // Here I would like to implement the interface of CustomNumberPicker
                  // in order to get the user input entered in the Dialog
              });
  
              return convertView;
          }
      }
  }
  </code></pre>
  
  <p>CustomNumberPicker (basically the same as in the docs):</p>
  
  <pre><code>public class CustomNumberPicker extends DialogFragment {
  
      public interface NoticeDialogListener {
          public void onDialogPositiveClick(DialogFragment dialog);
          public void onDialogNegativeClick(DialogFragment dialog);
      }
  
      // Use this instance of the interface to deliver action events
      NoticeDialogListener mListener;
  
      // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
      @Override
      public void onAttach(Activity activity) {
          super.onAttach(activity);
          // Verify that the host activity implements the callback interface
          try {
              // Instantiate the NoticeDialogListener so we can send events to the host
              mListener = (NoticeDialogListener) activity;
          } catch (ClassCastException e) {
              // The activity doesn't implement the interface, throw exception
              throw new ClassCastException(activity.toString()
                  + " must implement NoticeDialogListener");
          }
      }
  
      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
          // Use the Builder class for convenient dialog construction
          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
          builder.setMessage("Sets")
              .setPositiveButton("set", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int id) {
                          // Return stuff here to the activity?
                      }
                  })
                  .setNegativeButton("cancle", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int id) {
                          // User cancelled the dialog
                      }
                  });
          // Create the AlertDialog object and return it
          return builder.create();
      }
  }
  </code></pre>