通过点击自定义对话框中的按钮生成一个新的自定义对话框

通过点击自定义对话框中的按钮生成一个新的自定义对话框

下面是我的第一层自定义对话框的类,其中,加载进来的布局中有三个按钮,第三个按钮也就是button3,是我当作生成下一层对话框的事件按钮。

package com.studio.dialogdemo;

import android.app.Dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;

/**
 * Created by dell on 2018/4/23.
 */

public class MyDialog1 extends Dialog {
    private Button button1,button2,button3;
    public MyDialog1(@NonNull Context context, int themeResId) {
        super(context, themeResId);
        setContentView(R.layout.layout_mydialog1);
        button1 = findViewById(R.id.button_yes_dialog1);
        button2 = findViewById(R.id.button_no_dialog1);
        button3 = findViewById(R.id.button_showthis);
        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                System.exit(0);
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
                ShowMyInformationDailog showMyInformationDailog = new ShowMyInformationDailog(this,R.style.mydialog);
                showMyInformationDailog.show();
            }
        });
    }
}

下面是我的第二层自定义对话框。这个自定义类中加载的布局中只有一个imageview。按理说,当我在第一个自定义对话框弹出来后点击button3的时候,会加载出第二层对话框,可是问题却是程序终止,应用闪退。请老师看看我哪里没注意!谢谢!

package com.studio.dialogdemo;

import android.app.Dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;

/**
 * Created by dell on 2018/4/23.
 */

public class ShowMyInformationDailog extends Dialog{

    public ShowMyInformationDailog(@NonNull View.OnClickListener context, int themeResId) {
        super((Context) context, themeResId);
        setContentView(R.layout.layout_dialog1_dialog);
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1、MyDialog1中,下图中的this你替换成当前调用这个MyDialog1的Activity的context,例如改成LoginActivity.this

http://img1.sycdn.imooc.com//climg/5ade9cac00015ffe07130157.jpg

2、ShowMyInformationDailog中,把红框部分的代码换成android.content.Context包下面的Context类

http://img1.sycdn.imooc.com//climg/5ade9d540001794e07100109.jpg

  • 金鱼家 提问者 #1
    我都改过了,可是在MyDialog1那里有这样的错误提示com.studio.dialogdemo.MainActivity' is not an enclosing class
    2018-04-24 14:56:12
  • irista23 回复 提问者 金鱼家 #2
    你把MyDialog1类和ShowMyInformationDailog类作为MainActivity的内部类就不需要context的传值了,如果定义在外部,你需要添加一个Context类型的成员属性,然后通过自定义对话框的构造方法把MainActivity.this传给Context类型的成员属性
    2018-04-24 15:48:41
  • 金鱼家 提问者 #3
    非常感谢!
    2018-04-24 16:13:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师