You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio编译成功但APP运行崩溃 日期匹配展示图片功能修改咨询

问题排查与代码修改方案

崩溃原因排查

  • 空指针异常1:代码中Date now_date = null后直接调用cal.setTime(now_date),传入空对象直接触发NPE崩溃。Calendar.getInstance()默认已经获取当前系统时间,不需要额外调用setTime设置当前时间。
  • 空指针异常2:XML中ImageView的id是@+id/imageView,但Java代码中findViewById传入的是R.id.content,找不到对应控件,后续调用setImageResource时会触发NPE。

调整后的逻辑实现

调整后支持按指定月、日匹配展示对应图片,注意Calendar的MONTH字段取值为0-11,0对应1月,11对应12月,可根据实际需求自行修改匹配规则和对应图片资源,XML文件无需修改,保持原有内容即可。
修改后的完整Java代码如下:

package com.wavedevelopers.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 正确绑定ImageView控件
        ImageView imageView = findViewById(R.id.imageView);
        // 获取当前系统日历实例,默认即为当前时间
        Calendar cal = Calendar.getInstance();
        
        // 提取当前月、日信息
        int currentMonth = cal.get(Calendar.MONTH);
        int currentDay = cal.get(Calendar.DATE_OF_MONTH);
        
        // 自定义日期匹配规则,可按需增删
        if(currentMonth == Calendar.JANUARY && currentDay == 1){
            // 匹配1月1日,展示对应图片
            imageView.setImageResource(R.drawable.a1);
        }else if(currentMonth == Calendar.OCTOBER && currentDay == 1){
            // 匹配10月1日,展示对应图片
            imageView.setImageResource(R.drawable.a2);
        }else{
            // 可选:添加未匹配到日期时的默认展示图片
            imageView.setImageResource(R.drawable.default_img);
        }
    }
}

内容的提问来源于stack exchange,提问作者Sathish Gkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:01