自定义对话框的类里面 Toast会报错

自定义对话框的类里面 Toast会报错

Toast 会报错,不知为啥,已经导入包了http://img1.sycdn.imooc.com//climg/5fc6fbe909e7054811780517.jpg

在这里输

package com.example.dateandtimedialog;

import android.app.Dialog;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import androidx.annotation.NonNull;

public class DateSetDialog extends Dialog {
public DateSetDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.set_date);
findViewById(R.id.done_btn).setOnClickListener(new View.OnClickListener() {
@Override
   public void onClick(View v) {
Toast.makeText(this,"datetime",Toast.LENGTH_LONG).show();
dismiss();
}
});
}
}

入代码,可通过选择【代码语言】突出显示

正在回答

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

1回答

同学,你好

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

这里的参数传递有误。第一个参数应该是一个Context对象,而之前在Activity中写用的this,是指的:当前Activity.this,而这个Activity也是一个Context,所以是没有问题的,而你现在是在一个监听器里写的this,就是指的当前监听器,所以就会报错了。祝学习愉快

  • HenryZhao 提问者 #1

    那我应该用  MainActivity.this    ?  

    2020-12-02 17:25:31
  • HenryZhao 提问者 #2

    http://img1.sycdn.imooc.com//climg/5fc75dd509dff2a707480166.jpgMainActivity.this 也报错了, 提示: 说不是一个enclosing class

    2020-12-02 17:27:39
  • 好帮手慕雪 回复 提问者 HenryZhao #3

    同学还是没有理解老师的意思,你在MainActivity的话,才能用MainActivity.this;而现在是在DateSetDialog中呢,所以写红框提示的context就可以了。

    2020-12-02 17:32:57
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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