我自定义的多选框可以选择,但是一点击确认(也就是文中的yes)就闪退了呢?(后续)

我自定义的多选框可以选择,但是一点击确认(也就是文中的yes)就闪退了呢?(后续)

https://class.imooc.com/course/qadetail/106256

我一不小心点击了采纳答案,请老师问可以继续帮我看看吗?

我继续最后老师的问题:我的check_dialog布局中没有那两个textview控件,他们在我的activity_main里面,因为这两个textview的内容最后是要显示在主界面的,而不是对话框里。

正在回答

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

2回答

你可以开始加载完TextView后让其隐藏,等点击对话框中的按钮后再让其可见,CheckDialog设置为MainActivity的内部类就可以直接处理TextView了。你可以参考老师帮你修改的如下代码:

public class MainActivity extends AppCompatActivity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.button);
        tv = findViewById(R.id.textView);
        tv.setVisibility(View.INVISIBLE);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CheckDialog1 dialog = new CheckDialog1(MainActivity.this, 0);
                dialog.show();
            }
        });
    }
    class CheckDialog1 extends Dialog {
        private Button yes;
        public CheckDialog1(@NonNull final Context context, int themeResId) {
            super(context, themeResId);
            setContentView(R.layout.checkbox_dialog);
            yes = findViewById(R.id.yes);
            yes.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    tv.setVisibility(View.VISIBLE);
                    tv.setText("个人爱好:");
                    dismiss();
                }
            });
        }
    }
}


irista23 2019-04-12 16:14:28

不能从加载的checkbox_dialog布局文件中读取TextView,因为没有在这个布局文件中找不到对应id所以就会报空指针错误。解决办法:1)在CheckDialog类中定义一个接口,将对话框中得到的数据回传给activity显示;2)更简单的办法是将CheckDialog类变为MainActivity的内部类。这样在yes的点击事件中就可以读取activity_main对应的布局文件中的控件了。

  • 提问者 LexieMIZUKI #1
    我的“个人爱好:”这串显示在主界面的TextView我想在退出对话框时才显示,开始不显示,但是我调用setText时总是会空指针报错,为什么呢?但是如果setText写在最开始的onCreate中就不会报错,但是我不想一开始就显示。
    2019-04-14 11:24:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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