我正在尝试从按钮单击发送电子邮件到存储在sqlite数据库中的所有电子邮件 . 我已成功选择一封电子邮件,但现在我正在尝试使用光标继续将电子邮件发送到所有存储的电子邮件地址 . 我遇到的问题是我无法弄清楚空值的来源 . 我正在使用以前从未使用过的代码,并且在检查代码本身时遇到了一些麻烦 . 下面是按钮调用和从数据库中检索地址数组的方法 .
view.findViewById(R.id.btn_save).setOnClickListener(new OnClickListener() {
public void onClick(View view ) {
Mail m = new Mail("gmail@gmail.com", "password");
String[] usereMail = getEmailsFromDB().split(",");
m.setTo(usereMail);
m.setFrom("gmail@gmail.com");
m.setSubject("subject");
m.setBody("Body");
try {
if(m.send()) {
Toast.makeText(getActivity(), "Email was sent successfully.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), "Email was not sent.", Toast.LENGTH_LONG).show();
}
} catch(Exception e) {
//Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show();
Log.e("MailApp", "Could not send email", e);
}
}
private String getEmailsFromDB() {
// TODO Auto-generated method stub
dataBase = mHelper.getReadableDatabase();
Cursor Cursor = dataBase.rawQuery("SELECT " + DbHelper.KEY_EMAIL + " FROM "
+ DbHelper.TABLE_NAME, null);
ArrayList<String> array = new ArrayList<String>();
while(Cursor.moveToNext()) {
String usereMail = Cursor.getString(Cursor.getColumnIndex(DbHelper.KEY_EMAIL));
array.add(usereMail);
}
Cursor.close();
return null;
}
});
下面是捕获的NullPointerException .
03-31 11:30:15.344: E/AndroidRuntime(15802): FATAL EXCEPTION: main
03-31 11:30:15.344: E/AndroidRuntime(15802): java.lang.NullPointerException
03-31 11:30:15.344: E/AndroidRuntime(15802): at app.norman.tennis.FoursFragment$1.onClick(FoursFragment.java:61)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.view.View.performClick(View.java:4231)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.view.View$PerformClick.run(View.java:17537)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.os.Handler.handleCallback(Handler.java:725)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.os.Handler.dispatchMessage(Handler.java:92)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.os.Looper.loop(Looper.java:158)
03-31 11:30:15.344: E/AndroidRuntime(15802): at android.app.ActivityThread.main(ActivityThread.java:5751)
03-31 11:30:15.344: E/AndroidRuntime(15802): at java.lang.reflect.Method.invokeNative(Native Method)
03-31 11:30:15.344: E/AndroidRuntime(15802): at java.lang.reflect.Method.invoke(Method.java:511)
03-31 11:30:15.344: E/AndroidRuntime(15802): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
03-31 11:30:15.344: E/AndroidRuntime(15802): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
03-31 11:30:15.344: E/AndroidRuntime(15802): at dalvik.system.NativeStart.main(Native Method)
是否正确创建了电子邮件地址数组,或者电子邮件调用编码不正确,还是完全不同?
1 回答
你真的从方法
getEmailsFromDB()
返回null检查线
return null;