簡體   English   中英

如何為自定義對話框設置按鈕單擊偵聽器?

[英]How to set button click listener for Custom Dialog?

我已經創建了一個主要的Dialog類,在該類上發送布局 ID 並將布局顯示為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>
 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();
                }
            });

        }
    });

你去吧:

    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
    }

}

建議先學好基礎。

我發現代碼更清晰地分離我的點擊處理程序。 在 onCreate 方法中添加:

signInbutton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
     // do stuff for signInButtonClick
  }
});

// same for other button

在 2019 年,這對我來說很有效。 您可以使用按鈕更改文本視圖。

  Dialog mdialog = new Dialog(this);
      mdialog.setContentView(R.layout.activity_select_type);
        mdialog.show();
TextView view = mdialog.findViewById(R.id.viewQuotes);
view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this, "Working...", Toast.LENGTH_SHORT).show();
    }
});
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
}
    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 中的按鈕中,您為對話框裝扮了,我嘗試了其他方法,但它們不起作用,我不知道為什么會這樣。也許有人會解決我的問題。 ||==

    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  ");
                    }
                }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM