Reputation: 513
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
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