- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此错误 java.lang.NullPointerException
正在显示,当我使用警报管理器使用接收器触发通知时。
我从 listView
中选择一个项目,然后调用 setNotification
方法,然后将重复警报设置为触发通知。
这是代码:
public class TimesActivity extends OptionsMenu {
ArrayList<String> getTiName = new ArrayList<String>();
ArrayList<String> getTiTime = new ArrayList<String>();
ArrayList<String> getTiBroad = new ArrayList<String>();
ArrayList<String> getTiImg = new ArrayList<String>();
public DAOTimes timeDatabase = null;
int minutes;
String prNameSelected;
String prTimeSelected;
Long now, start;
int period;
AlarmManager am;
// =============================================================================
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listvideo);
timeDatabase = new DAOTimes(this);
getTimes();
showTimes();
}
// =============================================================================
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
// Create out AlterDialog
final CharSequence[] array = { "5 min", "10 min", "15 min",
"45 min", "60 min" };
Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
});
builder.setSingleChoiceItems(array, -1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
if (array[which] == "1 min") {
minutes = 1;
} else if (array[which] == "10 min") {
minutes = 10;
} else if (array[which] == "15 min") {
minutes = 15;
} else if (array[which] == "45 min") {
minutes = 45;
} else if (array[which] == "60 min") {
minutes = 60;
}
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
return super.onCreateDialog(id);
}
// =============================================================================
public void setNotification() {
Toast.makeText(TimesActivity.this, "result : ",
Toast.LENGTH_LONG).show();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MILLISECOND, period);
Intent intent = new Intent(this, NotAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
30000, pendingIntent);
}
// =============================================================================
public void showTimes() {
final ListView listview = (ListView) findViewById(R.id.listView1);
listview.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
prNameSelected = getTiName.get(position);
prTimeSelected = getTiTime.get(position);
String date = getIntent().getStringExtra("DAY_DATE");
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd, HH:mm:ss.SS");
format.setLenient(false);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
int millisecond = calendar.get(Calendar.MILLISECOND);
String time1 = year + "-" + (month + 1) + "-" + day + ", "
+ hour + ":" + minute + ":" + second + "."
+ millisecond;
Date date1;
try {
date1 = format.parse(time1);
now = date1.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
String time2 = date + ", " + prTimeSelected + ":00.00";
Date date2;
try {
date2 = format.parse(time2);
start = date2.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
int result = (int) (start - now);
if (start > now) {
period = result;
} else {
// period = start + (7 * 24 * 60 * 60 * 1000);
}
Toast.makeText(TimesActivity.this, "result : " + period,
Toast.LENGTH_LONG).show();
setNotification();
// showDialog(0);
}
});
listview.setAdapter(new TimesAdapter(TimesActivity.this, getTiName
.toArray(new String[getTiName.size()]), getTiTime
.toArray(new String[getTiTime.size()]), getTiBroad
.toArray(new String[getTiBroad.size()]), getTiImg
.toArray(new String[getTiImg.size()])));
}
}
接收器 Activity :
package com.shadatv.shada;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class NotAlarm extends BroadcastReceiver {
NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
NotificationManager nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(context);
builder.setSmallIcon(android.R.drawable.btn_star);
builder.setTicker("notification");
Notification notify = builder.getNotification();
CharSequence title = "you have been notified";
CharSequence details = "bvcburhvurh uhuh hghu hu";
PendingIntent pending = PendingIntent
.getActivity(context, 0, new Intent(), 0);
notify.setLatestEventInfo(context, title, details, pending);
nm.notify(0, notify);
}
}
日志猫:
03-27 10:39:33.550: E/AndroidRuntime(3890): FATAL EXCEPTION: main
03-27 10:39:33.550: E/AndroidRuntime(3890): java.lang.NullPointerException
03-27 10:39:33.550: E/AndroidRuntime(3890): at com.shadatv.shada.TimesActivity.setNotification(TimesActivity.java:161)
03-27 10:39:33.550: E/AndroidRuntime(3890): at com.shadatv.shada.TimesActivity$3.onItemClick(TimesActivity.java:228)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.widget.AbsListView.performItemClick(AbsListView.java:1179)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2707)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.widget.AbsListView$1.run(AbsListView.java:3462)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.os.Handler.handleCallback(Handler.java:605)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.os.Handler.dispatchMessage(Handler.java:92)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.os.Looper.loop(Looper.java:137)
03-27 10:39:33.550: E/AndroidRuntime(3890): at android.app.ActivityThread.main(ActivityThread.java:4507)
03-27 10:39:33.550: E/AndroidRuntime(3890): at java.lang.reflect.Method.invokeNative(Native Method)
03-27 10:39:33.550: E/AndroidRuntime(3890): at java.lang.reflect.Method.invoke(Method.java:511)
03-27 10:39:33.550: E/AndroidRuntime(3890): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
03-27 10:39:33.550: E/AndroidRuntime(3890): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
03-27 10:39:33.550: E/AndroidRuntime(3890): at dalvik.system.NativeStart.main(Native Method)
最佳答案
您忘记初始化am
警报管理器。
像这样初始化它。
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
关于android - 使用警报管理器时出现 java.lang.NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654709/
我之前让 dll 注入(inject)器变得简单,但我有 Windows 7,我用 C# 和 C++ 做了它,它工作得很好!但是现在当我在 Windows 8 中尝试相同的代码时,它似乎没有以正确的方
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我有几个不同的蜘蛛,想一次运行所有它们。基于 this和 this ,我可以在同一个进程中运行多个蜘蛛。但是,我不知道如何设计一个信号系统来在所有蜘蛛都完成后停止 react 器。 我试过了: cra
有没有办法在达到特定条件时停止扭曲 react 器。例如,如果一个变量被设置为某个值,那么 react 器应该停止吗? 最佳答案 理想情况下,您不会将变量设置为一个值并停止 react 器,而是调用
https://code.angularjs.org/1.0.0rc9/angular-1.0.0rc9.js 上面的链接定义了外部js文件,我不知道Angular-1.0.0rc9.js的注入(in
我正在尝试运行一个函数并将服务注入(inject)其中。我认为这可以使用 $injector 轻松完成.所以我尝试了以下(简化示例): angular.injector().invoke( [ "$q
在 google Guice 中,我可以使用函数 createInjector 创建基于多个模块的注入(inject)器。 因为我使用 GWT.create 在 GoogleGin 中实例化注入(in
我在 ASP.NET Core 1.1 解决方案中使用配置绑定(bind)。基本上,我在“ConfigureServices Startup”部分中有一些用于绑定(bind)的简单代码,如下所示: s
我在 Spring MVC 中设置 initBinder 时遇到一些问题。我有一个 ModelAttribute,它有一个有时会显示的字段。 public class Model { privat
我正在尝试通过jquery post发布knockoutjs View 模型 var $form = $('#barcodeTemplate form'); var data = ko.toJS(vm
如何为包含多态对象集合的复杂模型编写自定义模型绑定(bind)程序? 我有下一个模型结构: public class CustomAttributeValueViewModel { publi
您好,我正在尝试实现我在 this article 中找到的扩展方法对于简单的注入(inject)器,因为它不支持开箱即用的特定构造函数的注册。 根据这篇文章,我需要用一个假的委托(delegate)
你好,我想自动注册我的依赖项。 我现在拥有的是: public interface IRepository where T : class public interface IFolderReposi
我正在使用 Jasmine 测试一些 Angular.js 代码。为此,我需要一个 Angular 注入(inject)器: var injector = angular.injector(['ng'
我正在使用 Matlab 代码生成器。不可能包含代码风格指南。这就是为什么我正在寻找一个工具来“ reshape ”、重命名和重新格式化生成的代码,根据我的: 功能横幅约定 文件横幅约定 命名约定 等
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我开发了一种工具,可以更改某些程序的外观。为此,我需要在某些进程中注入(inject)一个 dll。 现在我基本上使用这个 approach .问题通常是人们无法注入(inject) dll,因为他们
我想使用 swing、spring 和 hibernate 编写一个 java 应用程序。 我想使用数据绑定(bind)器用 bean 的值填充 gui,并且我还希望它反射(reflect) gui
我有这段代码,当两个蜘蛛完成后,程序仍在运行。 #!C:\Python27\python.exe from twisted.internet import reactor from scrapy.cr
要点是 Spring Batch (v2) 测试框架具有带有 @Autowired 注释的 JobLauncherTestUtils.setJob。我们的测试套件有多个 Job 类提供者。因为这个类不
我是一名优秀的程序员,十分优秀!