Android 自定义Dialog类,并在Activity中实现按钮监听事件

实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下:

开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的按钮,Dialog类如下,在MyDialog这个类中实现了一个LeaveMyDialogListener接口,用来实现onclick的点击事件:

package com.Ieasy.Tool;
import com.Ieasy.ieasyware.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyDialog extends Dialog implements android.view.View.OnClickListener {

    private Context context;
    private TextView txt;
    private Button   btnok,btnedit,btncancle,btnsave;
    private LeaveMyDialogListener listener;

    public interface LeaveMyDialogListener{
        public void onClick(View view);
    }   

    public MyDialog(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        this.context = context;
    }

    public MyDialog(Context context,int theme,LeaveMyDialogListener listener) {
        super(context,theme);
        // TODO Auto-generated constructor stub
        this.context = context;
        this.listener = listener;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.setContentView(com.Ieasy.ieasyware.R.layout.mydialog);
        btncancle = (Button)findViewById(R.id.mycancle);
        btnedit   = (Button)findViewById(R.id.myedit);
        btnok     = (Button)findViewById(R.id.myok);
        txt       = (TextView)findViewById(R.id.miaosu);
        btnsave   = (Button)findViewById(R.id.mysave);
        btncancle.setOnClickListener(this);
        btnedit.setOnClickListener(this);
        btnok.setOnClickListener(this);
        btnsave.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        listener.onClick(v);
    }
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:background="@drawable/night_biz_subscribe_media_recommend_item_bg"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/miaosu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"
            android:text="描述"
            android:textColor="@color/whitesmoke"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/myok"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="确定" />

            <Button
                android:id="@+id/myedit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="编辑" />

            <Button
                android:id="@+id/mysave"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="保存" />

            <Button
                android:id="@+id/mycancle"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/btnclick"
                android:textColor="@color/whitesmoke"
                android:text="取消" />

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

引用的style:

<style name="MyDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/night_biz_subscribe_media_recommend_item_bg</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

最后在Activity中调用,通过LeaveMyDialogListener 接口来实现在Activity中的点击事件

MyDialog dialog = new MyDialog(context,R.style.MyDialog,
        new MyDialog.LeaveMyDialogListener() {
         @Override
         public void onClick(View view) {
            switch(view.getId()){
               case R.id.myok:
                        break;
              case R.id.myedit:

              break;
              case R.id.mycancle:

              break;
              case R.id.mysave:
              dialog.dismiss();

              default:
              break;
                     }
                 }
            });
            dialog.show();

如果想获得Dialog中的TextView控件可以这样获取,给TextView赋值时候一定要在Dialog show了之后在赋值,你懂得。

TextView text = (TextView) dialog.findViewById(R.id.miaosu);
时间: 2024-10-26 10:59:46

Android 自定义Dialog类,并在Activity中实现按钮监听事件的相关文章

hibernate中我要监听事件,并将事件类型和时间写入到log表中,如何操作呢?

问题描述 hibernate中我要监听事件,并将事件类型和时间写入到log表中,如何操作呢? hibernate中我要监听事件,并将事件类型和时间写入到log表中,如何操作呢? log 表就3个字段:操作人,操作名,操作时间. 应该如何弄呢啊?

android 自定义adapter中,在监听事件里修改控件属性

问题描述 ViewHolderviewHolder=null;if(null==convertView){viewHolder=newViewHolder();....................viewHolder.bbs_like_img=(ImageView)convertView.findViewById(R.id.bbs_like_img);}else{viewHolder=(ViewHolder)convertView.getTag();}监听点击事件,修改bbs_like_im

Android 自定义EditText实现粘贴,复制,剪切的监听

package com.dwtedx.qq.view; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.ContextMenu; import android.view.MenuItem; import android

java中按钮监听以及鼠标监听的使用

我们在进行java的GUI开发的时候,按钮以及鼠标监听的使用无疑是相当最要的,而如何巧妙的运用这些监听器,对今后的开发更是有很大的帮助,下面将分别介绍. 实现按钮监听的方法: 在java.awt.event下面有一个ActionListener的类,它是一个用于接收操作事件的侦听器接口,对处理操作事件感兴趣的就可以去使用这个接口. 首先我们需要写一个类去实现这个接口,然后对我们的JButton对象添加按钮响应,最后再给这个按钮添加监听器,具体代码如下: JButton bu=new JButto

请问 API 中说的 消息监听 :以上两种方式都可以执行相同的操作,但是广播和监听事件不可同时混用 的 具体意思

问题描述 在同一个 activity 或者appliction 中同时 注册了 两种会怎么样? 同时接受两次?在appliction 中注册了 监听事件, 在 activity 中注册广播 这也是混用?会怎么样? 解决方案 你的项目里只能选择其中一种方式使用,两种混用的话,收到消息之后,广播和监听都不执行

安卓(Android)动态创建多个按钮并添加监听事件_Android

1.获取屏幕大小,以合理设定 按钮 大小及位置 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; 2.自定义layout组件 RelativeLayout layout = new RelativeLayout(this); 3.这里创建1

jQuery中的fullCalendar控件,给按钮添加监听事件。

问题描述 jQuery中的fullCalendar控件,给按钮添加监听事件. 5C $('#calendar').fullCalendar({ height : 177 header:{ left: 'title' center: '' right: 'prevnext' } theme: false buttonText: { today: '今天' } selectable:true allDayText: '全天' monthNames: ['一月''二月''三月''四月''五月''六月'

android view进入或移出屏幕内的监听事件有吗

问题描述 android view进入或移出屏幕内的监听事件有吗 android有没有view进入或滑出屏幕的监听事件呢 我的一个scrollview里面有很多view,我想要是有view进入或滑出屏幕的监听事件,不知道有没有这样的listener 解决方案 Rect scrollBounds = new Rect(); scrollView.getHitRect(scrollBounds); if (childView.getLocalVisibleRect(scrollBounds))则为出

Android 自定义dialog添加文字超链接,点击报错无法实现跳转

问题描述 Android 自定义dialog添加文字超链接,点击报错无法实现跳转 自定义dialog,添加文字超链接,点击超链接报错,同样方法,在activity中就能实现,什么原因?? 解决方案 Intent中加入这个试试: intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 解决方案二: 报错是报的什么错,, 解决方案三: 抓取log如下 01-01 02:49:07.928: E/InputEventReceiver(3774): Excepti