Codemator
Codemator

Reputation: 513

Android: alertDialog not working

I am trying to add an alert dialogue on click of button, but some how it is not working.. but the toast i added is working perfectly. Could somebody please help me out. I've added context directly instead of "this" when creating object [ new AlertDialog.Builder(context).create(); ] as when i was adding this, it was giving me error " The constructor AlertDialog.Builder(new View.OnClickListener(){}) is undefined"

       public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
            View convertView, ViewGroup parent) {
        Service service = (Service) getChild(groupPosition, childPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.child_layout, null);
        }
        TextView tv = (TextView) convertView.findViewById(R.id.tvChild);
        Drawable d = convertView.findViewById(R.id.submit).getBackground();  
        PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);  
        d.setColorFilter(filter); 
        tv.setText("   " + service.getName());
        this.submitButton = (Button)convertView.findViewById(R.id.submit);
        this.submitButton.setText("Activate");
        this.submitButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                Toast.makeText(context, "Service Activation Request Send", Toast.LENGTH_LONG).show();
                AlertDialog alertDialog = new AlertDialog.Builder(context).create();
                alertDialog.setTitle("Alert 1");
                alertDialog.setMessage("This is an alert");
                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int which) {
                    return;
                } }); 
                }
              });

        //this.submitButton.setPadding(20, 0, 0, 0);

        // Depending upon the child type, set the imageTextView01
        tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
        if (service instanceof DataService) {
            tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.data, 0, 0, 0);
        } else if (service instanceof VoiceService) {
            tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.voice, 0, 0, 0);
        } else if (service instanceof SmsService) {
            tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.sms, 0, 0, 0);
        }
        return convertView;
        }

Upvotes: 1

Views: 1626

Answers (2)

Greg McGowan
Greg McGowan

Reputation: 1360

You are calling create() before setting any of the fields and also you are not calling show()

The android documentation states that its better to define creation of the dialogs in your our Activity's onCreateDialog(int) callback method

http://developer.android.com/guide/topics/ui/dialogs.html

You could do that and then show your dialog in the button onClickListener by calling showDialog(int) with the relevant Id

Upvotes: 0

Bahadır Yağan
Bahadır Yağan

Reputation: 5967

Call the show() method on alertDialog.

Upvotes: 3

Related Questions