Attempt to invoke virtual method 'void android.widget.LinearLayout.setBackgroundColor(int)'

在做android_studio的本息计算器的时候,出现了一个问题:

Attempt to invoke virtual method 'void android.widget.LinearLayout.setBackgroundColor(int)'on a null object reference
atcom.example.myapplication.MainActivity.onOptionsItemSelected(MainActivity.java:110)


在110行出现了错误,源码为:

switch(item.getItemId()){
            case R.id.yellow :
                linearLayout.setBackgroundColor(Color.YELLOW);
                break;
            case R.id.blue :
                linearLayout.setBackgroundColor(Color.BLUE);
                break;
            case R.id.green :
                linearLayout.setBackgroundColor(Color.GREEN);
                break;
            case R.id.red :
                linearLayout.setBackgroundColor(Color.RED);
                break;

再看报错信息,大致的意思为背景颜色设置在一个空的对象上,出现错误。
仔细找代码发现我的布局变量没有指定页面的id,所以会出现点击按钮会出现闪退的现象,做个记录,以免下次再粗心出错
更改如下:

指定linearlayout的加载页面就ok了,这都能忘了,太粗心了!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个错误提示,意思是尝试在一个空对象引用上调用虚拟方法“void android.widget.imageview.setimageresource(int)”。可能是因为在代码中使用了一个未初始化的ImageView对象,或者在布局文件中没有正确地声明ImageView控件。需要检查代码和布局文件,确保ImageView对象被正确地初始化和声明。 ### 回答2: 这个错误的意思是在一个空对象引用上调用了一个虚拟方法"void android.widget.imageview.setimageresource(int)",也就是说你没有初始化或者给这个对象赋值,然后就尝试去给它执行一个方法,这是不允许的。 这个错误通常出现在Java程序中,特别是在安卓应用程序中经常会遇到。造成这个错误的原因可能有许多,以下是常见的情况: 1.代码中没有初始化对象,尝试操作空对象。 2.试图在另一个活动中初始化一个视图对象,但这个对象只能在当前活动中初始化。 3.在使用findViewById()方法时,找不到指定的视图资源ID。 4.在异步任务中或者子线程中尝试更新UI元素。 5.在Fragment中尝试更新Activity中的视图。 6.在视图未完全加载之前尝试操作它们。 要解决这个问题,首先需要找出错误发生的位置,并确定问题的根本原因。通常建议使用Android Studio的调试器来逐步调试代码,以查找出可能引起错误的代码行。对于上述错误,建议采取以下一些步骤: 1.检查代码中是否存在没有初始化或赋值的对象,尤其是在使用findViewById()方法时。 2.确保在初始化视图前,所需要的布局已经被正确地加载和设置。 3.判断在异步任务或子线程中是否正确调用了runOnUiThread()方法。 4.使用 getActivity()方法来获取Fragment的Activity对象,然后再进行更新操作。 5.在使用视图前,确保它们已经被正确加载并且完全可用。 总之,要在Android开发过程中避免这种错误,开发者需要仔细阅读Android文档,正确使用API和调试技巧,牢记不要尝试在空对象上调用虚拟方法。 ### 回答3: 这个错误提示通常是由于调用一个空对象的方法引起的。即使使用了某个对象的方法,但如果对象为null,则会出现这个错误。 在Android开发中,常见的情况是尝试使用ImageView的setImageresource()方法,但是当ImageView对象为空时,就会出现这个错误。这可能是因为在代码中未正确初始化或赋值ImageView对象。 解决此错误的方法是确保在调用对象的方法之前,正确地初始化或赋值该对象。另外,建议在使用任何对象方法之前,先进行null检查,以防止类似的错误出现。 在调试时,可以使用Logcat查看错误的详细信息,包括出现错误的具体位置以及相关的堆栈跟踪信息,以帮助快速定位和解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值