当前位置: 首页 > 知识库问答 >
问题:

发送挂起意图警报管理器时应用程序崩溃

巢嘉志
2023-03-14

理想情况下,我希望在应用程序暂停时调用,但为了使其正常工作,我从按钮调用方法。我在一个ArrayList中有一个ArrayList,它有一个如果列表和项设置为active,我希望发送到警报管理器的时间列表。如果有人能帮我弄明白为什么这是失败的,我会非常感激的。

public class ReminderList extends AppCompatActivity {

    public static ArrayList<ReminderType> AllReminders=new ArrayList<>();
    public reminderCAdapter adapter;
    public static ReminderType currentReminderType;
    public static ItemType currentItemType;
    public static TimeType currentTimesType;
    Context context;
    AlarmManager alarmMan;
    PendingIntent pIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.context=this;
        setContentView(R.layout.activity_reminder_list);
        //generate list
            try {
                LoadData();
            } catch (IOException | ClassNotFoundException | JSONException e) {
                e.printStackTrace();
            }
        alarmMan=(AlarmManager) getSystemService(ALARM_SERVICE);

        adapter=new reminderCAdapter(AllReminders,this);

        //handle listview and assign adapter
        ListView lView = (ListView)findViewById(R.id.listView);
        lView.setAdapter(adapter);
    }

    //Iterates through all reminders to see if reminder is enabled and if item is enabled and has a time
    public void CheckAllActiveReminders(View view){
        //Go through each reminder
        Log.e("1", "1");
        for(int i=0;i<AllReminders.size();i++){
            //if the reminder is active continue
            Log.e("2", "1");
            if(AllReminders.get(i).ReminderActive){
                //Go through each item
                Log.e("3", "1");
                for (int j=0;j<AllReminders.get(i).Items.size();j++){
                    //if the item is active
                    Log.e("4", "1");
                    if(AllReminders.get(i).Items.get(j).ItemActive){
                        //Go through each timetype
                        Log.e("5", "1");
                        for (int h=0;h<AllReminders.get(i).Items.get(j).Times.size();h++){
                            Log.e("6", "1");
                            Intent rIntent=new Intent(this.context, Alarm_Receiver.class);
                            Log.e("7", "1");
                            pIntent=PendingIntent.getBroadcast(ReminderList.this,0, rIntent,PendingIntent.FLAG_UPDATE_CURRENT);
                            Log.e("8", AllReminders.get(i).ReminderName+", "+AllReminders.get(i).Items.get(j).ItemName+", "+AllReminders.get(i).Items.get(j).Times.get(h).displayTime);
                            alarmMan.set(AlarmManager.RTC_WAKEUP,AllReminders.get(i).Items.get(j).Times.get(h).cal.getTimeInMillis(),pIntent);
                        }
                    }else{
                        //If item is deactivated all times in it need to be cancelled
                        Log.e("Fail 2", "1");
                    }
                }
            }else{
                //if reminder is not active all items in it need to be deactivated
                Log.e("Fail 1", "1");
            }
        }

    }
}

共有1个答案

贝杜吟
2023-03-14

由com.example.poods.remindmeandlogit.reminderlist.checkallactiveReminders(reminderlist.java:84)中的java.lang.NullPointerException引起

第84行是什么?你在那里访问一个空对象。查看什么是NullPointerException,以及如何修复它?

 类似资料:
  • 这是设置u和删除通知的代码。如果你需要更多的细节,请告诉我。堆栈溢出的唯一解决方案是关于相同的挂起意图。我已经尝试过这个解决方案,但没有成功。

  • 对于某些活动的意图是有效的,对于某些特定的活动意图是崩溃的,我已经改变并尝试了不同的方法,但是对于某些活动意图是无效的,应用程序正在构建,但是在手机上运行之后,它在调试期间没有显示出任何错误?我尝试了不同的方法,但它仍然崩溃,谁能帮助我解决它? MainActivity java 清单文件

  • 嗨,我目前正在使用警报管理器。我写了下面给出的代码。根据代码,警报管理器应该在10秒后触发,但在我的代码中,警报管理器会立即触发。请帮助。 还有我的警报接收课 我已经在清单中添加了所需的权限。

  • objectName.java 主要问题是我无法转到“ageinput.java”文件, activity_ageinput.xml activity_ageinput.xml edit_text.xml 崩溃报告

  • 我有一个服务,它首先创建一个新的意图,并在其上调用。在此之后,我调用。然后调用(没有传递标志),并将挂起的意图传递给AlarmManager。 但在警报触发之前(甚至之后),我创建了另一个意图,并再次调用,但不设置任何附加内容。然后再次将其传递给。但是,这次我在PendingIntent上调用,以便立即接收intent。 我所观察到的是,最初的临时演员是以新的意图交付的。我似乎可以一遍又一遍地这样