我想制作一个警报应用程序,该应用程序每天会警报5次特定时间。在打开alarmAcivity类之前,可以使用以下代码。我的意思是,每当设置警报时,以及在调用alarmActivity时,应用程序都会崩溃。在logcat中,它说“试图在空对象引用上调用虚拟方法'java.lang.String .Alarm.getAlarmName()'”。我尝试了多种方法来解决它,但我做不到。请帮助我,我该如何实现?
Alarm.java
import java.io.Serializable;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import com.dev_station.alarm.alert.AlarmAlertBroadcastReciever;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
public class Alarm implements Serializable {
public enum Difficulty{
EASY,
MEDIUM,
HARD;
@Override
public String toString() {
switch(this.ordinal()){
case 0:
return "Easy";
case 1:
return "Medium";
case 2:
return "Hard";
}
return super.toString();
}
}
public enum Day{
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY;
@Override
public String toString() {
switch(this.ordinal()){
case 0:
return "Sunday";
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
}
return super.toString();
}
}
private static final long serialVersionUID = 8699489847426803789L;
private int id;
private Boolean alarmActive = true;
private Calendar alarmTime = Calendar.getInstance();
private Day[] days = {Day.MONDAY,Day.TUESDAY,Day.WEDNESDAY,Day.THURSDAY,Day.FRIDAY,Day.SATURDAY,Day.SUNDAY};
private String alarmTonePath = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM).toString();
private Boolean vibrate = true;
private String alarmName = "Alarm Clock";
private Difficulty difficulty = Difficulty.EASY;
public Alarm() {
}
// private void writeObject(java.io.ObjectOutputStream out) throws IOException {
// out.defaultWriteObject();
// out.writeObject(getAlarmToneUri().getEncodedPath());
// }
// private void readObject(java.io.ObjectInputStream in) throws IOException {
// try {
// in.defaultReadObject();
// this.setAlarmToneUri(Uri.parse(in.readObject().toString()));
// } catch (ClassNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
/**
* @return the alarmActive
*/
public Boolean getAlarmActive() {
return alarmActive;
}
/**
* @param alarmActive
* the alarmActive to set
*/
public void setAlarmActive(Boolean alarmActive) {
this.alarmActive = alarmActive;
}
/**
* @return the alarmTime
*/
public Calendar getAlarmTime() {
if (alarmTime.before(Calendar.getInstance()))
alarmTime.add(Calendar.DAY_OF_MONTH, 1);
while(!Arrays.asList(getDays()).contains(Day.values()[alarmTime.get(Calendar.DAY_OF_WEEK)-1])){
alarmTime.add(Calendar.DAY_OF_MONTH, 1);
}
return alarmTime;
}
/**
* @return the alarmTime
*/
public String getAlarmTimeString() {
String time = "";
if (alarmTime.get(Calendar.HOUR_OF_DAY) <= 9)
time += "0";
time += String.valueOf(alarmTime.get(Calendar.HOUR_OF_DAY));
time += ":";
if (alarmTime.get(Calendar.MINUTE) <= 9)
time += "0";
time += String.valueOf(alarmTime.get(Calendar.MINUTE));
return time;
}
/**
* @param alarmTime
* the alarmTime to set
*/
public void setAlarmTime(Calendar alarmTime) {
this.alarmTime = alarmTime;
}
/**
* @param alarmTime
* the alarmTime to set
*/
public void setAlarmTime(String alarmTime) {
String[] timePieces = alarmTime.split(":");
Calendar newAlarmTime = Calendar.getInstance();
newAlarmTime.set(Calendar.HOUR_OF_DAY,
Integer.parseInt(timePieces[0]));
newAlarmTime.set(Calendar.MINUTE, Integer.parseInt(timePieces[1]));
newAlarmTime.set(Calendar.SECOND, 0);
setAlarmTime(newAlarmTime);
}
/**
* @return the repeatDays
*/
public Day[] getDays() {
return days;
}
/**
* @param set
* the repeatDays to set
*/
public void setDays(Day[] days) {
this.days = days;
}
public void addDay(Day day){
boolean contains = false;
for(Day d : getDays())
if(d.equals(day))
contains = true;
if(!contains){
List<Day> result = new LinkedList<Day>();
for(Day d : getDays())
result.add(d);
result.add(day);
setDays(result.toArray(new Day[result.size()]));
}
}
public void removeDay(Day day) {
List<Day> result = new LinkedList<Day>();
for(Day d : getDays())
if(!d.equals(day))
result.add(d);
setDays(result.toArray(new Day[result.size()]));
}
/**
* @return the alarmTonePath
*/
public String getAlarmTonePath() {
return alarmTonePath;
}
/**
* @param alarmTonePath the alarmTonePath to set
*/
public void setAlarmTonePath(String alarmTonePath) {
this.alarmTonePath = alarmTonePath;
}
/**
* @return the vibrate
*/
public Boolean getVibrate() {
return vibrate;
}
/**
* @param vibrate
* the vibrate to set
*/
public void setVibrate(Boolean vibrate) {
this.vibrate = vibrate;
}
/**
* @return the alarmName
*/
public String getAlarmName() {
return alarmName;
}
/**
* @param alarmName
* the alarmName to set
*/
public void setAlarmName(String alarmName) {
this.alarmName = alarmName;
}
public Difficulty getDifficulty() {
return difficulty;
}
public void setDifficulty(Difficulty difficulty) {
this.difficulty = difficulty;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRepeatDaysString() {
StringBuilder daysStringBuilder = new StringBuilder();
if(getDays().length == Day.values().length){
daysStringBuilder.append("Every Day");
}else{
Arrays.sort(getDays(), new Comparator<Day>() {
@Override
public int compare(Day lhs, Day rhs) {
return lhs.ordinal() - rhs.ordinal();
}
});
for(Day d : getDays()){
switch(d){
case TUESDAY:
case THURSDAY:
// daysStringBuilder.append(d.toString().substring(0, 4));
// break;
default:
daysStringBuilder.append(d.toString().substring(0, 3));
break;
}
daysStringBuilder.append(',');
}
daysStringBuilder.setLength(daysStringBuilder.length()-1);
}
return daysStringBuilder.toString();
}
public void schedule(Context context) {
setAlarmActive(true);
Intent myIntent = new Intent(context, AlarmAlertBroadcastReciever.class);
myIntent.putExtra("alarm", this);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, getAlarmTime().getTimeInMillis(), pendingIntent);
}
public String getTimeUntilNextAlarmMessage(){
long timeDifference = getAlarmTime().getTimeInMillis() - System.currentTimeMillis();
long days = timeDifference / (1000 * 60 * 60 * 24);
long hours = timeDifference / (1000 * 60 * 60) - (days * 24);
long minutes = timeDifference / (1000 * 60) - (days * 24 * 60) - (hours * 60);
long seconds = timeDifference / (1000) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60);
String alert = "Alarm will sound in ";
if (days > 0) {
alert += String.format(
"%d days, %d hours, %d minutes and %d seconds", days,
hours, minutes, seconds);
} else {
if (hours > 0) {
alert += String.format("%d hours, %d minutes and %d seconds",
hours, minutes, seconds);
} else {
if (minutes > 0) {
alert += String.format("%d minutes, %d seconds", minutes,
seconds);
} else {
alert += String.format("%d seconds", seconds);
}
}
}
return alert;
}
}
AlarmAlertActivity.java
import com.dev_station.alarm.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.HapticFeedbackConstants;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
public class AlarmAlertActivity extends Activity implements OnClickListener {
private Alarm alarm;
private MediaPlayer mediaPlayer;
private StringBuilder answerBuilder = new StringBuilder();
private MathProblem mathProblem;
private Vibrator vibrator;
private boolean alarmActive;
private TextView problemView;
private TextView answerView;
private String answerString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.alarm_alert);
Bundle bundle = this.getIntent().getExtras();
alarm = (Alarm) bundle.getSerializable("alarm");
this.setTitle(alarm.getAlarmName());
((Button) findViewById(R.id.Button_clear)).setOnClickListener(this);
TelephonyManager telephonyManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.d(getClass().getSimpleName(), "Incoming call: "
+ incomingNumber);
try {
mediaPlayer.pause();
} catch (IllegalStateException e) {
}
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.d(getClass().getSimpleName(), "Call State Idle");
try {
mediaPlayer.start();
} catch (IllegalStateException e) {
}
break;
}
super.onCallStateChanged(state, incomingNumber);
}
};
telephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_CALL_STATE);
startAlarm(alarm.getAlarmName());
}
@Override
protected void onResume() {
super.onResume();
alarmActive = true;
}
private void startAlarm(String alarmName) {
if (alarm.getAlarmTonePath() != "") {
//mediaPlayer = new MediaPlayer();
if (alarm.getVibrate()) {
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = { 1000, 200, 200, 200 };
vibrator.vibrate(pattern, 0);
}
try {
if(alarmName.equalsIgnoreCase("Fazr")){
mediaPlayer=MediaPlayer.create(AlarmAlertActivity.this,R.raw.adhan_fajr);
}else{
mediaPlayer=MediaPlayer.create(AlarmAlertActivity.this,R.raw.adhan);
}
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
alarmActive = false;
if (vibrator != null)
vibrator.cancel();
try {
mediaPlayer.stop();
} catch (IllegalStateException ise) {
}
try {
mediaPlayer.release();
} catch (Exception e) {
}
//android.os.Process.killProcess(android.os.Process.myPid());
finish(); // finish current activity
//System.exit(0);
}
});
} catch (Exception e) {
mediaPlayer.release();
alarmActive = false;
}
}
}
/*
* (non-Javadoc)
*
* @see android.app.Activity#onBackPressed()
*/
@Override
public void onBackPressed() {
if (!alarmActive)
super.onBackPressed();
}
/*
* (non-Javadoc)
*
* @see android.app.Activity#onPause()
*/
@Override
protected void onPause() {
super.onPause();
StaticWakeLock.lockOff(this);
}
@Override
protected void onDestroy() {
try {
if (vibrator != null)
vibrator.cancel();
} catch (Exception e) {
}
try {
mediaPlayer.stop();
} catch (Exception e) {
}
try {
mediaPlayer.release();
} catch (Exception e) {
}
super.onDestroy();
}
@Override
public void onClick(View v) {
if (!alarmActive)
return;
/*String button = (String) v.getTag();
v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
if (button.equalsIgnoreCase("clear")) {
if (answerBuilder.length() > 0) {
answerBuilder.setLength(answerBuilder.length() - 1);
answerView.setText(answerBuilder.toString());
}
} else if (button.equalsIgnoreCase(".")) {
if (!answerBuilder.toString().contains(button)) {
if (answerBuilder.length() == 0)
answerBuilder.append(0);
answerBuilder.append(button);
answerView.setText(answerBuilder.toString());
}
} else if (button.equalsIgnoreCase("-")) {
if (answerBuilder.length() == 0) {
answerBuilder.append(button);
answerView.setText(answerBuilder.toString());
}
} else {
answerBuilder.append(button);
answerView.setText(answerBuilder.toString());
if (isAnswerCorrect()) {
alarmActive = false;
if (vibrator != null)
vibrator.cancel();
try {
mediaPlayer.stop();
} catch (IllegalStateException ise) {
}
try {
mediaPlayer.release();
} catch (Exception e) {
}
this.finish();
}
}
if (answerView.getText().length() >= answerString.length()
&& !isAnswerCorrect()) {
answerView.setTextColor(Color.RED);
} else {
answerView.setTextColor(Color.BLACK);
}*/
String button = (String) v.getTag();
v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
if (button.equalsIgnoreCase("clear")) {
alarmActive = false;
if (vibrator != null)
vibrator.cancel();
try {
mediaPlayer.stop();
} catch (IllegalStateException ise) {
}
try {
mediaPlayer.release();
} catch (Exception e) {
}
this.finish();
//System.exit(0);
}
}
public boolean isAnswerCorrect() {
boolean correct = false;
try {
correct = mathProblem.getAnswer() == Float.parseFloat(answerBuilder
.toString());
} catch (NumberFormatException e) {
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return correct;
}
}
Database.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
import java.util.ArrayList;
import java.util.List;
import com.dev_station.alarm.Alarm;
import com.dev_station.alarm.Alarm.Difficulty;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/*
* usage:
* DatabaseSetup.init(egActivityOrContext);
* DatabaseSetup.createEntry() or DatabaseSetup.getContactNames() or DatabaseSetup.getDb()
* DatabaseSetup.deactivate() then job done
*/
public class Database extends SQLiteOpenHelper {
static Database instance = null;
static SQLiteDatabase database = null;
static final String DATABASE_NAME = "DB";
static final int DATABASE_VERSION = 1;
public static final String ALARM_TABLE = "alarm";
public static final String COLUMN_ALARM_ID = "_id";
public static final String COLUMN_ALARM_ACTIVE = "alarm_active";
public static final String COLUMN_ALARM_TIME = "alarm_time";
public static final String COLUMN_ALARM_DAYS = "alarm_days";
public static final String COLUMN_ALARM_DIFFICULTY = "alarm_difficulty";
public static final String COLUMN_ALARM_TONE = "alarm_tone";
public static final String COLUMN_ALARM_VIBRATE = "alarm_vibrate";
public static final String COLUMN_ALARM_NAME = "alarm_name";
public static void init(Context context) {
if (null == instance) {
instance = new Database(context);
}
}
public static SQLiteDatabase getDatabase() {
if (null == database) {
database = instance.getWritableDatabase();
}
return database;
}
public static void deactivate() {
if (null != database && database.isOpen()) {
database.close();
}
database = null;
instance = null;
}
public static long create(Alarm alarm) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_ALARM_ACTIVE, alarm.getAlarmActive());
cv.put(COLUMN_ALARM_TIME, alarm.getAlarmTimeString());
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
oos = new ObjectOutputStream(bos);
oos.writeObject(alarm.getDays());
byte[] buff = bos.toByteArray();
cv.put(COLUMN_ALARM_DAYS, buff);
} catch (Exception e){
}
cv.put(COLUMN_ALARM_DIFFICULTY, alarm.getDifficulty().ordinal());
cv.put(COLUMN_ALARM_TONE, alarm.getAlarmTonePath());
cv.put(COLUMN_ALARM_VIBRATE, alarm.getVibrate());
cv.put(COLUMN_ALARM_NAME, alarm.getAlarmName());
return getDatabase().insert(ALARM_TABLE, null, cv);
}
public static int update(Alarm alarm) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_ALARM_ACTIVE, alarm.getAlarmActive());
cv.put(COLUMN_ALARM_TIME, alarm.getAlarmTimeString());
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
oos = new ObjectOutputStream(bos);
oos.writeObject(alarm.getDays());
byte[] buff = bos.toByteArray();
cv.put(COLUMN_ALARM_DAYS, buff);
} catch (Exception e){
}
cv.put(COLUMN_ALARM_DIFFICULTY, alarm.getDifficulty().ordinal());
cv.put(COLUMN_ALARM_TONE, alarm.getAlarmTonePath());
cv.put(COLUMN_ALARM_VIBRATE, alarm.getVibrate());
cv.put(COLUMN_ALARM_NAME, alarm.getAlarmName());
return getDatabase().update(ALARM_TABLE, cv, "_id=" + alarm.getId(), null);
}
public static int deleteEntry(Alarm alarm){
return deleteEntry(alarm.getId());
}
public static int deleteEntry(int id){
return getDatabase().delete(ALARM_TABLE, COLUMN_ALARM_ID + "=" + id, null);
}
public static int deleteAll(){
return getDatabase().delete(ALARM_TABLE, "1", null);
}
public static Alarm getAlarm(int id) {
// TODO Auto-generated method stub
String[] columns = new String[] {
COLUMN_ALARM_ID,
COLUMN_ALARM_ACTIVE,
COLUMN_ALARM_TIME,
COLUMN_ALARM_DAYS,
COLUMN_ALARM_DIFFICULTY,
COLUMN_ALARM_TONE,
COLUMN_ALARM_VIBRATE,
COLUMN_ALARM_NAME
};
Cursor c = getDatabase().query(ALARM_TABLE, columns, COLUMN_ALARM_ID+"="+id, null, null, null,
null);
Alarm alarm = null;
if(c.moveToFirst()){
alarm = new Alarm();
alarm.setId(c.getInt(1));
alarm.setAlarmActive(c.getInt(2)==1);
alarm.setAlarmTime(c.getString(3));
byte[] repeatDaysBytes = c.getBlob(4);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(repeatDaysBytes);
try {
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
Alarm.Day[] repeatDays;
Object object = objectInputStream.readObject();
if(object instanceof Alarm.Day[]){
repeatDays = (Alarm.Day[]) object;
alarm.setDays(repeatDays);
}
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
alarm.setDifficulty(Difficulty.values()[c.getInt(5)]);
alarm.setAlarmTonePath(c.getString(6));
alarm.setVibrate(c.getInt(7)==1);
alarm.setAlarmName(c.getString(8));
}
c.close();
return alarm;
}
public static Cursor getCursor() {
// TODO Auto-generated method stub
String[] columns = new String[] {
COLUMN_ALARM_ID,
COLUMN_ALARM_ACTIVE,
COLUMN_ALARM_TIME,
COLUMN_ALARM_DAYS,
COLUMN_ALARM_DIFFICULTY,
COLUMN_ALARM_TONE,
COLUMN_ALARM_VIBRATE,
COLUMN_ALARM_NAME
};
return getDatabase().query(ALARM_TABLE, columns, null, null, null, null,
null);
}
Database(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE IF NOT EXISTS " + ALARM_TABLE + " ( "
+ COLUMN_ALARM_ID + " INTEGER primary key autoincrement, "
+ COLUMN_ALARM_ACTIVE + " INTEGER NOT NULL, "
+ COLUMN_ALARM_TIME + " TEXT NOT NULL, "
+ COLUMN_ALARM_DAYS + " BLOB NOT NULL, "
+ COLUMN_ALARM_DIFFICULTY + " INTEGER NOT NULL, "
+ COLUMN_ALARM_TONE + " TEXT NOT NULL, "
+ COLUMN_ALARM_VIBRATE + " INTEGER NOT NULL, "
+ COLUMN_ALARM_NAME + " TEXT NOT NULL)");
db.execSQL("INSERT INTO alarm VALUES (1, 1, '5:15','"+Alarm.Day.FRIDAY+"', 0, 'content', 1, 'Fazr')");
db.execSQL("INSERT INTO alarm VALUES (2, 1, '13:15','"+Alarm.Day.FRIDAY+"', 0, 'content', 1, 'Dhuhr')");
db.execSQL("INSERT INTO alarm VALUES (3, 1, '16:45','"+Alarm.Day.FRIDAY+"', 0, 'content', 1, 'Asr')");
db.execSQL("INSERT INTO alarm VALUES (4, 1, '18:15','"+Alarm.Day.FRIDAY+"', 0, 'content', 1, 'Maghrib')");
db.execSQL("INSERT INTO alarm VALUES (5, 1, '19:45','"+Alarm.Day.FRIDAY+"', 0, 'content', 1, 'Isha')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + ALARM_TABLE);
onCreate(db);
}
public static List<Alarm> getAll() {
List<Alarm> alarms = new ArrayList<Alarm>();
Cursor cursor = Database.getCursor();
if (cursor.moveToFirst()) {
do {
// COLUMN_ALARM_ID,
// COLUMN_ALARM_ACTIVE,
// COLUMN_ALARM_TIME,
// COLUMN_ALARM_DAYS,
// COLUMN_ALARM_DIFFICULTY,
// COLUMN_ALARM_TONE,
// COLUMN_ALARM_VIBRATE,
// COLUMN_ALARM_NAME
Alarm alarm = new Alarm();
alarm.setId(cursor.getInt(0));
alarm.setAlarmActive(cursor.getInt(1) == 1);
alarm.setAlarmTime(cursor.getString(2));
byte[] repeatDaysBytes = cursor.getBlob(3);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
repeatDaysBytes);
try {
ObjectInputStream objectInputStream = new ObjectInputStream(
byteArrayInputStream);
Alarm.Day[] repeatDays;
Object object = objectInputStream.readObject();
if (object instanceof Alarm.Day[]) {
repeatDays = (Alarm.Day[]) object;
alarm.setDays(repeatDays);
}
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
alarm.setDifficulty(Difficulty.values()[cursor.getInt(4)]);
alarm.setAlarmTonePath(cursor.getString(5));
alarm.setVibrate(cursor.getInt(6) == 1);
alarm.setAlarmName(cursor.getString(7));
alarms.add(alarm);
} while (cursor.moveToNext());
}
cursor.close();
return alarms;
}
}
写您先前活动的Bundel回复。只需将其记录并写在这里。我认为您的Bundel没有名称为AlarmName的参数。