We also implement OnCancelListener and OnDismissListener to handle the cancel and dismiss events.
Modify the main activity in the last article "Custom dialog, with data passed in Bundle".
package com.AndroidCustomDialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class AndroidCustomDialogActivity extends Activity {
 
 EditText editTextPass;
 Button buttonOpenDialog;
 
 String KEY_TEXTPSS = "TEXTPSS";
 static final int CUSTOM_DIALOG_ID = 0;
 TextView dialog_TextView;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        editTextPass = (EditText)findViewById(R.id.textpass);
        buttonOpenDialog = (Button)findViewById(R.id.opendialog);
        buttonOpenDialog.setOnClickListener(new Button.OnClickListener(){
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Bundle bundle = new Bundle();
    bundle.putString(KEY_TEXTPSS, editTextPass.getText().toString());
    showDialog(CUSTOM_DIALOG_ID, bundle);
   }});
  
    }
 @Override
 protected Dialog onCreateDialog(int id) {
  Dialog dialog = null;
  
  switch(id) {
     case CUSTOM_DIALOG_ID:
      dialog = new Dialog(AndroidCustomDialogActivity.this);
      dialog.setContentView(R.layout.dialoglayout);
      dialog.setTitle("Custom Dialog");
      dialog_TextView = (TextView)dialog.findViewById(R.id.dialogtext);
      
      Button dialog_OK = (Button)dialog.findViewById(R.id.dialog_ok);
      dialog_OK.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     Toast.makeText(AndroidCustomDialogActivity.this, 
       "Dismiss by OK button", 
       Toast.LENGTH_LONG).show();
     dismissDialog(CUSTOM_DIALOG_ID);
    }});
      
      Button dialog_Cancel = (Button)dialog.findViewById(R.id.dialog_cancel);
      dialog_Cancel.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     Toast.makeText(AndroidCustomDialogActivity.this, 
       "Dismiss by Cancel button", 
       Toast.LENGTH_LONG).show();
     dismissDialog(CUSTOM_DIALOG_ID);
    }});
      
      dialog.setCancelable(true);
      dialog.setCanceledOnTouchOutside(true);
      
      dialog.setOnCancelListener(new OnCancelListener(){
    @Override
    public void onCancel(DialogInterface dialog) {
     // TODO Auto-generated method stub
     Toast.makeText(AndroidCustomDialogActivity.this, 
       "OnCancelListener", 
       Toast.LENGTH_LONG).show();
    }});
      
      dialog.setOnDismissListener(new OnDismissListener(){
    @Override
    public void onDismiss(DialogInterface dialog) {
     // TODO Auto-generated method stub
     Toast.makeText(AndroidCustomDialogActivity.this, 
       "OnDismissListener", 
       Toast.LENGTH_LONG).show();
    }});
      
         break;
     }
  return dialog;
 }
 @Override
 protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
  // TODO Auto-generated method stub
  super.onPrepareDialog(id, dialog, bundle);
  switch(id) {
     case CUSTOM_DIALOG_ID:
      dialog_TextView.setText("Text passed to Dialog: " + bundle.getString(KEY_TEXTPSS));
         break;
     }
  
 }
}

 
No comments:
Post a Comment