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

メインスレッドでDB操作を行うと、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 エンジニアは、悲しそうに首を横に振るでしょう。

つまり、バックグラウンドでDBアクセスを行います。

この議論全体に欠けているのは、強制終了の logCat です。何がうまくいかないのですか?ここでは推測しているだけであり、logCat がなければ、推測は純粋に while (true) { int i = 0; です。}

于 2012-12-20T18:51:32.570 に答える