我是android编程的初学者。我在执行一个方法时遇到此错误。 我有这个方法来监听音量变化事件。
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//db = new DatabaseHelper(this.getApplicationContext());
AutomatedFragment obj = new AutomatedFragment();
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP))
{
//@ override
obj.sendSMSEmergency();
}
return true;
}
现在我正在调用另一个方法从其他类发送SMSEMergency()...这是
public void sendSMSEmergency() {
db = new ContactsManager(getActivity());
ArrayList<String> numberList = db.numberList();
String numbers[] = new String[numberList.size()];
numbers = numberList.toArray(numbers);
try {
SmsManager smsManager = SmsManager.getDefault();
for(String number : numbers) {
Log.d("number", number);
smsManager.sendTextMessage(number, null, msg.getMessage(), sentPendIntent, delivered_pendintent);
}
Toast.makeText(getActivity(), "Automatic Texts Successfull", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getActivity(), "Texts Failed !!", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
当我按下音量时,我的应用程序停止,我在logcat中遇到以下错误。
05-11 12:18:29.726: E/AndroidRuntime(828): java.lang.NullPointerException
05-11 12:18:29.726: E/AndroidRuntime(828): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
请帮助我不知道如何解决这个问题
答案 0 :(得分:3)
您传递给Context
构造函数的SQLiteOpenHelper
为空。
假设ContactsManager
是你的助手类,在这里
db = new ContactsManager(getActivity());
在片段附加到活动之前,您将实例化助手,getActivity()
返回null。使用Context
的其他一些来源,例如传递YourActivity.this
作为参数。