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

前言:之前一个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)中也是可以正常运行的。

你可能感兴趣的:(android:app,android,android,studio)