0
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() 
        {

// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,int selectedMonth, int selectedDay) {
    year = selectedYear;
    month = selectedMonth;
    day = selectedDay;              
    try
     {
db=openOrCreateDatabase("Lecturer",SQLiteDatabase.CREATE_IF_NECESSARY,null);
db.execSQL("Create Table If Not Exists temp (Month INTEGER,Date INTEGER,Year INTEGER,Event TEXT)");
db.execSQL("INSERT INTO temp(Month, Date, Year, Event) VALUES (11,17,2012,'first')");
db.execSQL("INSERT INTO temp(Month, Date, Year, Event) VALUES (10,9,2012,'second')");
Cursor c=db.rawQuery("SELECT * FROM temp",null);
c.moveToFirst();
while(c.isAfterLast() == false)
    {
     t2=c.getString(0);
    // Log.e("",""+t2);
     int n = Integer.parseInt(t2);
     t3=c.getString(1);
     int n1 = Integer.parseInt(t3);
     t4=c.getString(2);
     int n2 = Integer.parseInt(t4);
     t5=c.getString(3);
     EditText t=(EditText)findViewById(R.id.editText1);
     Log.e("",""+day);
     if(day==n&& month==n1&&year==n2)
        {
            Log.e("",""+t5);
            t.setText(t5);
        }
    else
        {
            t.setText("No Event");
        }       
            c.moveToNext();
        }
            c.close();

                }
                catch(SQLException e)
                {

                }
                // set selected date into textview
                tvDisplayDate.setText(new StringBuilder().append(month + 1)
                        .append("-").append(day).append("-").append(year)
                        .append(" "));

                // set selected date into datepicker also
                dpResult.init(year, month, day, null);

            }
        };


}

在 DB 中存储和获取事件时,我遇到了一些问题并强制关闭。请帮助我提出任何有用的建议……这里我试图将 datepicker 选择的日期与数据库存储的日期进行比较,并显示当天的事件。

4

2 回答 2

1

从 ICS 开始,如果您在主线程上执行任何数据库操作,您将崩溃。当您只是尝试在 DB 中写入一个值时,您可以这样做:

new Thread(new Runnable() {
    public void run() {
        do_the_db_operations
    }
 }.start();
于 2012-12-20T17:38:13.153 回答
0

DB 访问可以在 UI 线程上运行。Activity 可以对自己调用 finish()。但是任何看到你这样做的 Android 工程师都会难过地摇头。

换句话说,在后台进行数据库访问。

整个讨论中缺少的是用于强制关闭的 logCat。怎么了?我们这里只是推测,没有 logCat,推测纯粹是 while (true) { int i = 0; }

于 2012-12-20T18:51:32.570 回答