Как установить прослушиватель кнопок для пользовательского диалога?
Я создал основной класс Dialog
, по которому я отправляю идентификатор макета и показывая макет как Dialog
теперь, когда я отправляю макет из вызывающего класса, он выворачивает диалог, но содержимое диалогового окна, т.е. кнопки недоступно. Я не могу установить для них прослушиватель кликов. Как это сделать?
ВЫЗОВ КЛАССА: -
CustomDialog obj=new CustomDialog(MailSenderActivity.this , R.layout.mydialog);
obj.show();
ГЛАВНЫЙ КЛАСС
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class CustomDialog extends Dialog implements
View.OnClickListener {
Dialog dialog;
int id;
public CustomDialog(MailSenderActivity mailsender, int id) {
super(mailsender);
this.id = id;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(id);
Button signInbutton=(Button)findViewById(R.id.signInButton);
Button closebutton=(Button)findViewById(R.id.closeButton);
}
public void closebutton(View v) {
Toast.makeText(getContext(), "You clicked a button!", Toast.LENGTH_LONG).show();
dismiss();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
id: -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:padding="30dip" android:orientation="horizontal"
android:weightSum="1"
android:background="@drawable/gmail">
<LinearLayout android:layout_width="296dp"
android:orientation="vertical" android:layout_gravity="center"
android:layout_weight="1.51" android:layout_height="497dp">
<TextView android:text="My Dialog" android:textSize="24.5sp"
android:layout_width="wrap_content" android:layout_gravity="center"
android:layout_height="wrap_content" android:layout_marginBottom="25dip"></TextView>
<TextView android:text="Enter Gmail Id" android:layout_width="fill_parent"
android:layout_height="wrap_content"></TextView>
<EditText android:id="@+id/name" android:layout_width="358dp"
android:singleLine="true" android:layout_height="wrap_content">
</EditText>
<TextView android:text="Enter Gmail Password"
android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView>
<EditText android:id="@+id/name" android:layout_width="314dp"
android:singleLine="true" android:layout_height="wrap_content"
android:password="false" android:inputType="textPassword"></EditText>
<Button android:text="Sign In" android:layout_width="67dp"
android:id="@+id/signInButton" android:layout_height="wrap_content"
android:clickable="true" android:onClick="signIn"></Button>
<Button android:text="close" android:layout_width="67dp"
android:id="@+id/closeButton" android:layout_height="wrap_content"
android:clickable="true" android:onClick="closeButton"></Button>
</LinearLayout>
</LinearLayout>
Ответы
Ответ 1
Там вы идете:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(id);
Button signInbutton=(Button)findViewById(R.id.signInButton);
signInButton.setOnClickListener(this);
Button closebutton=(Button)findViewById(R.id.closeButton);
closeButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(R.id.closeButton == v.getId()) {
closeButton(v);
} else {
// do the same for signInButton
}
}
Предложите вам заранее изучить базовый уровень.
Ответ 2
dialog_bring_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final Dialog dialog = new Dialog(MyActivity.this);
dialog.setContentView(R.layout.MyCustomDialogxmlfile);
dialog.show();
/* My Cancel Button , and its listener */
my_cancel_btn=(Button)dialog.findViewById(R.id.datesetbtn);
my_cancel_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
});
Ответ 3
Я обнаружил, что код более ясен, чтобы разделить мои обработчики кликов. Добавьте это в метод onCreate:
signInbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do stuff for signInButtonClick
}
});
// same for other button
Ответ 4
dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
Button dialog_btn = (Button) dialog.findViewById(R.id.dialog_button);
dialog_btn.setOnClickListener(new View.OnClickListener()
{
// Perform button logic
}
Ответ 5
submit.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CustomDialog dialog1 = new CustomDialog(Classname.this);
dialog1.setContentView(R.layout.submitdialog);
dialog1.setTitle(" SUBMIT :");
TextView text = (TextView) dialog1.findViewById(R.id.message);
text.setText(" Your Answer is correct ");
}
}
Ответ 6
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.warning);
builder.setTitle("Warning");
final LinearLayout backAlarmDialogLayout = (LinearLayout) getLayoutInflater()
.inflate(R.layout.custumedialog_layou, null);
builder.setView(backAlarmDialogLayout);
builder.setCancelable(true);
backAlarmDialog = builder.create();
Установите эти коды для инициализации вашего костюмированного диалога в onCreate, как это, и если вы хотите добавить слушателя к своей кнопке, вы можете написать другой метод, например
public void onClickCancel(View view){
backAlarmDialog.dismiss();
}
то вы используете
android:onClick="onClickCancel"
в кнопке в файле XML.files вы столкнулись с диалогом, я пробовал другие способы, но они просто не работали, и я не знаю, почему это. Может, кто-то решит мою проблему. || = =