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
相关产品推荐
相关产品推荐

