I have 2 buttons in my xml file with RelativeLayout. In my class I have extended Dialog & implemetned OnClickListener and also added OnClick(View v) method. But somehow the onClick code is never executed when the button is clicked. Can anyone help me find the problem with my code :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:padding="10px">
......
<Button android:id="@+id/saveBtn_settingDlg" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_below="@+id/editText1"
android:layout_marginLeft="10px" android:text="Save" />
<Button android:id="@+id/closeBtn_settingDlg" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Close" android:layout_alignBaseline="@+id/saveBtn_setting"
android:layout_toRightOf="@+id/saveBtn_setting" android:onClick="CloseDialog" />
Class
public class SettingDialog extends Dialog implements OnClickListener {
private Button btn_save, btn_close;
// In Constructor
btn_save = (Button) findViewById(R.id.saveBtn_settingDlg);
btn_close = (Button) findViewById(R.id.closeBtn_settingDlg);
btn_save.setOnClickListener(this);
btn_close.setOnClickListener(this);
@Override
public void onClick(View v) {
if (v == btn_save)
SaveSettings();
else if (v == btn_close)
CloseDialog();
return;
}
private void CloseDialog() {
disposeAll();
this.dismiss();
}
public void CloseBtnClicked(View v) {
CloseDialog();
}
In xml for close btn I tried CloseBtnClicked also but no difference and I get an UnexpectedError message and application shuts down. Somehow the event is only not activated in any ways. And also on adding onClick to closebtn the button is now shown on the top-left of the screen and lost the actual location of it.
Calling SettingDialog from Activity class :
private void OpenSettingDialog() {
AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setIcon(R.drawable.ic_dialog_small);
View inflatedView = LayoutInflater.from(this).inflate(R.layout.settings_dialog, null);
ad.setView(inflatedView);
AlertDialog adlg = ad.create();
adlg.show();
}
Can anyone help me know the reason for this problem and how do I solve it. I am a newbie to Android.
Thanks
Solution to my Problem :
Instead of using AlertBuilder and AlertDialog, I just called the dialog as :
And this worked well. All click events were handled within SettingDialog only. No changes were to be made in SettingDialog. Only the way to call SettingDialog is changed in the Activity. That's it.
BTW, In onClick() comapring a View with its name :
Also works perfectly. I use this way only and it works well. No need to check with the Id only.
Hope my solution will help others who are stuck like me. Thanks to all for your efforts and helping hand.
add this method in java class :
because in layout you have set android:onClick="CloseDialog"