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

Android应用如何根据系统日期切换MainActivity中显示的图片

代码问题梳理

  • 存在空指针异常风险:你将now_date初始化为null后直接传入cal.setTime(),运行时会直接崩溃,无法获取当前系统时间
  • 逻辑不匹配需求:现有判断逻辑是按周几切换图片,和你需要的「指定具体年月日显示对应图片」的要求不符

调整后实现代码

package com.wavedevelopers.chat;

import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;

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

public class MainActivity extends AppCompatActivity {

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

        ImageView imageView = findViewById(R.id.content);
        // Calendar.getInstance()默认获取当前系统时间,不需要额外设置Date
        Calendar cal = Calendar.getInstance();

        // 匹配2021年1月1日:注意Calendar月份从0开始计数,1月对应Calendar.JANUARY=0
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DAY_OF_MONTH);

        if (year == 2021 && month == Calendar.JANUARY && day == 1) {
            imageView.setImageResource(R.drawable.image1);
        } else {
            imageView.setImageResource(R.drawable.image2);
        }
    }
}

扩展说明

如果后续需要支持更多日期对应不同图片的需求,可以用Map存储日期和对应图片资源的映射关系,避免写多层if-else逻辑,参考逻辑如下:

  • 把日期按「年-月-日」格式转为字符串作为Key
  • 图片资源ID作为Value存入Map
  • 每次拿当前时间转成的Key去Map中匹配,存在就用对应的资源,不存在就用默认图

内容的提问来源于stack exchange,提问作者Pranesh S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:00