2010-11-20 13 views
0
public class CustomDialog extends Dialog { 

    public int result = -1;  

    public CustomDialog(Context context, int theme) { 
     super(context, theme); 
     RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rdbGp1); 
     radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
     { 

      public void onCheckedChanged(RadioGroup arg0, int arg1) 
      { 
       result = arg1; 
       Log.i("Dialog", "Result="+result); 
       cancel(); 
      } 
     }); 
    } 

    public CustomDialog(Context context) { 
     super(context); 

    } 

    /** 
    * Helper class for creating a custom dialog 
    */ 
    public static class Builder { 

     private Context context; 
     private String title; 
     private String message; 
     private String positiveButtonText; 
     private String negativeButtonText; 
     private View contentView; 

     private DialogInterface.OnClickListener 
         positiveButtonClickListener, 
         negativeButtonClickListener; 

     public Builder(Context context) { 
      this.context = context; 
     } 

     /** 
     * Set the Dialog message from String 
     * @param title 
     * @return 
     */ 
     public Builder setMessage(String message) { 
      this.message = message; 
      return this; 
     } 

     /** 
     * Set the Dialog message from resource 
     * @param title 
     * @return 
     */ 
     public Builder setMessage(int message) { 
      this.message = (String) context.getText(message); 
      return this; 
     } 

     /** 
     * Set the Dialog title from resource 
     * @param title 
     * @return 
     */ 
     public Builder setTitle(int title) { 
      this.title = (String) context.getText(title); 
      return this; 
     } 

     /** 
     * Set the Dialog title from String 
     * @param title 
     * @return 
     */ 
     public Builder setTitle(String title) { 
      this.title = title; 
      return this; 
     } 

     /** 
     * Set a custom content view for the Dialog. 
     * If a message is set, the contentView is not 
     * added to the Dialog... 
     * @param v 
     * @return 
     */ 
     public Builder setContentView(View v) { 
      this.contentView = v; 
      return this; 
     } 

     /** 
     * Set the positive button resource and it's listener 
     * @param positiveButtonText 
     * @param listener 
     * @return 
     */ 
     public Builder setPositiveButton(int positiveButtonText, 
       DialogInterface.OnClickListener listener) { 
      this.positiveButtonText = (String) context 
        .getText(positiveButtonText); 
      this.positiveButtonClickListener = listener; 
      return this; 
     } 

     /** 
     * Set the positive button text and it's listener 
     * @param positiveButtonText 
     * @param listener 
     * @return 
     */ 
     public Builder setPositiveButton(String positiveButtonText, 
       DialogInterface.OnClickListener listener) { 
      this.positiveButtonText = positiveButtonText; 
      this.positiveButtonClickListener = listener; 
      return this; 
     } 

     /** 
     * Set the negative button resource and it's listener 
     * @param negativeButtonText 
     * @param listener 
     * @return 
     */ 
     public Builder setNegativeButton(int negativeButtonText, 
       DialogInterface.OnClickListener listener) { 
      this.negativeButtonText = (String) context 
        .getText(negativeButtonText); 
      this.negativeButtonClickListener = listener; 
      return this; 
     } 

     /** 
     * Set the negative button text and it's listener 
     * @param negativeButtonText 
     * @param listener 
     * @return 
     */ 
     public Builder setNegativeButton(String negativeButtonText, 
       DialogInterface.OnClickListener listener) { 
      this.negativeButtonText = negativeButtonText; 
      this.negativeButtonClickListener = listener; 
      return this; 
     } 

     /** 
     * Create the custom dialog 
     */ 
     public CustomDialog create() { 
      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      // instantiate the dialog with the custom Theme 
      final CustomDialog dialog = new CustomDialog(context, 
        R.style.Dialog); 
      dialog.setOnCancelListener(new OnCancelListener() 
     { 
     public void onCancel(DialogInterface arg0) 
     { 
      Log.i("FooDialog", "Result="+dialog.result); 
     } 
     }); 
      View layout = inflater.inflate(R.layout.credits, null); 
      dialog.addContentView(layout, new LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
      // set the dialog title 
      ((TextView) layout.findViewById(R.id.title)).setText(title); 
      // set the confirm button 
      if (positiveButtonText != null) { 
       ((Button) layout.findViewById(R.id.positiveButton)) 
         .setText(positiveButtonText); 
       if (positiveButtonClickListener != null) { 
        ((Button) layout.findViewById(R.id.positiveButton)) 
          .setOnClickListener(new View.OnClickListener() { 
           public void onClick(View v) { 
            positiveButtonClickListener.onClick(
              dialog, 
              DialogInterface.BUTTON_POSITIVE); 
           } 
          }); 
       } 
      } else { 
       // if no confirm button just set the visibility to GONE 
       layout.findViewById(R.id.positiveButton).setVisibility(
         View.GONE); 
      } 
      // set the cancel button 
      if (negativeButtonText != null) { 
       ((Button) layout.findViewById(R.id.negativeButton)) 
         .setText(negativeButtonText); 
       if (negativeButtonClickListener != null) { 
        ((Button) layout.findViewById(R.id.negativeButton)) 
          .setOnClickListener(new View.OnClickListener() { 
           public void onClick(View v) { 
            negativeButtonClickListener.onClick(
              dialog, 
              DialogInterface.BUTTON_NEGATIVE); 
           } 
          }); 
       } 
      } else { 
       // if no confirm button just set the visibility to GONE 
       layout.findViewById(R.id.negativeButton).setVisibility(
         View.GONE); 
      } 
      // set the content message 
      if (contentView != null) { 
       // if no message set 
       // add the contentView to the dialog body 
       ((LinearLayout) layout.findViewById(R.id.content)) 
         .removeAllViews(); 
       ((LinearLayout) layout.findViewById(R.id.content)) 
         .addView(contentView, 
           new LayoutParams(
             LayoutParams.WRAP_CONTENT, 
             LayoutParams.WRAP_CONTENT)); 
      } 
      dialog.setContentView(layout); 

      return dialog; 
     } 

    } 

} 

Hallo Ich baue android app und ich versuche RadioButton id aus dem benutzerdefinierten Dialog mit dem Haupt Akivität zu aktivieren Sie diese Option, aber die App Kraft schließt auf dieser Linie radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()Pass Wert von CustomDialog auf die Hauptaktivität

kann jemand geben Ihnen einige Hinweise danken

Antwort

0

Achten Sie darauf, die gute Klasse für dieses Ereignis importiert

android.widget.RadioGroup.OnCheckedChangeListener 

und nicht die Verbindung Aber Tonne Version.

Verwandte Themen