app报错:android.view.View android.widget.LinearLayout.getChildAt(int)‘ on a null object reference

文章讲述了作者将Eclipse项目迁移到AndroidStudio时遇到的空指针异常,发现是由于SDK版本升级导致的。通过将targetSdkVersion和compileSdkVersion降低到之前的版本,问题得以解决,且新编译的App在不同版本Android上运行正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:之前一个eclipse项目的app项目迁移到Android studio项目的时候,运行app出现android.view.View android.widget.LinearLayout.getChildAt(int)' on a null object reference报错。app之前在eclipse中编译出来的是可以正常运行的。

定位错误发现在下面函数中的TextView tv = (TextView) layout.getChildAt(0):

    private void showUntilCancel() {
        if (canceled) { //如果已经取消显示,就直接return
            return;
        }
        mToast = Toast.makeText(mContext, message,Toast.LENGTH_LONG);
        LinearLayout layout = (LinearLayout) mToast.getView();
        TextView tv = (TextView) layout.getChildAt(0);
        tv.setTextSize(20);
        tv.setTextColor(Color.parseColor("#ff0000"));
        mToast.setGravity(gravity, 0, 100);
        mToast.show();
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                showUntilCancel();
            }
        }, 3500);
    }

log提示变量layout为空指针,这就比较奇怪了,eclipse中也是这样写的就没报错。区别就是Android studio中使用的 compileSdkVersion和targetSdkVersion版本是最新的,是基于33版本的,这个app之前是基于sdk 29版本的。

于是,尝试修改build.gradle文件中的targetSdkVersion和compileSdkVersion为29,重新编译运行没有报错了。编译后的app在Android13(SDK 33)中也是可以正常运行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值