如何设置按钮,点击监听器自定义对话框?监听器、自定义、对话框、如何设置

2023-09-07 10:42:06 作者:你笑在眉眼

我已经对我发出的布局ID,并显示布局对话框现在,当我送的布局与调用类它弹出的对话框但是对话框即按钮的内容是无法访问我可以'一主对话框类t将点击监听他们...帮助我如何做到这一点下面是我的code ...

调用类: -

  CustomDialog OBJ =新CustomDialog(MailSenderActivity.this,R.layout.mydialog);
obj.show();
 

主类

 进口android.app.Dialog;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;
进口android.widget.Toast;

公共类CustomDialog扩展对话框工具
View.OnClickListener {
    对话对话框;
    INT ID;


    公共CustomDialog(MailSenderActivity mailsender,INT ID){
        超(mailsender);
        this.id = ID;
    }

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(ID);



        按钮signInbutton =(按钮)findViewById(R.id.signInButton);

        按钮closebutton =(按钮)findViewById(R.id.closeButton);




        }






    公共无效closebutton(视图v){
        Toast.makeText(的getContext(),你单击一个按钮!,Toast.LENGTH_LONG).show();
        解雇();

    }

    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根

    }
}
 

id是: -

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_height =FILL_PARENT机器人:layout_width =FILL_PARENT
    机器人:填充=30dip机器人:方向=横向
    机器人:weightSum =1
    机器人:背景=@可绘制/ Gmail的>
    < LinearLayout中的android:layout_width =296dp
        机器人:方向=垂直机器人:layout_gravity =中心
        机器人:layout_weight =1.51机器人:layout_height =497dp>
        < TextView的Andr​​oid版本:文本=我的对话的Andr​​oid:TEXTSIZE =24.5sp
            机器人:layout_width =WRAP_CONTENT机器人:layout_gravity =中心
            机器人:layout_height =WRAP_CONTENT机器人:layout_marginBottom =25dip>< / TextView的>
        < TextView的Andr​​oid版本:文本=输入Gmail的ID机器人:layout_width =FILL_PARENT
            机器人:layout_height =WRAP_CONTENT>< / TextView的>
        < EditText上机器人:ID =@ + ID /名称机器人:layout_width =358dp
            机器人:单线=真正的机器人:layout_height =WRAP_CONTENT>

        < /的EditText>
        < TextView的Andr​​oid版本:文本=输入Gmail密码
            机器人:layout_width =FILL_PARENT机器人:layout_height =WRAP_CONTENT>< / TextView的>
        < EditText上机器人:ID =@ + ID /名称机器人:layout_width =314dp
            机器人:单线=真正的机器人:layout_height =WRAP_CONTENT
            机器人:密码=假的Andr​​oid版本:inputType =textPassword>< /的EditText>
        <按钮的android:文本=登录机器人:layout_width =67dp
            机器人:ID =@ + ID / signInButton机器人:layout_height =WRAP_CONTENT
            机器人:可点击=真正的机器人:的onClick =签到>< /按钮>

        <按钮的android:文本=关闭机器人:layout_width =67dp
            机器人:ID =@ + ID / closeButton机器人:layout_height =WRAP_CONTENT
            机器人:可点击=真正的机器人:的onClick =closeButton>< /按钮>
    < / LinearLayout中>
< / LinearLayout中>
 
自定义组件 数据监听器 案例 三十五

解决方案

你去那里:

 公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(ID);

    按钮signInbutton =(按钮)findViewById(R.id.signInButton);
    signInButton.setOnClickListener(本);
    按钮closebutton =(按钮)findViewById(R.id.closeButton);
    closeButton.setOnClickListener(本);
    }

@覆盖
公共无效的onClick(视图v){
    如果(R.id.closeButton == v.getId()){
        closeButton(五);
    } 其他 {

    //做同样的signInButton
    }

}
 

建议你学习基本的事先。

I have made a main Dialog class on which i send the layout id and shows the Layout as a Dialog now when i send the layout from calling class it pops up the dialog but the contents of dialog i.e. buttons are inaccessible i can't set click listener for them...help me how to do this below is my code...

CALLING CLASS:-

   CustomDialog obj=new CustomDialog(MailSenderActivity.this , R.layout.mydialog);
obj.show();

MAIN CLASS

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 is:-

<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>

解决方案

There you go:

    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
    }

}

Suggest you learn the basic beforehand.