0

すべて..私はアンドロイドに不慣れです。残りのアラーム付きのカレンダーを作成しようとしています。コーディングして正常に動作するものはすべてありますが、「アラームイベント」はLogCatでsystem.out.printとしてのみ機能しますが、AndroidエミュレーターGUIでは表示できません。スレッドを使用して、wakeUpでこのアラーム機能を作成します。このスレッドでは、GUIにアラートボックスを表示したいと思います。ここにコードを添付しました。スレッド中にメッセージを表示する方法を教えてもらえますか?

コーディング:

public void run() {
        for (;;) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
            Calendar cal = Calendar.getInstance();
            stime = dateFormat.format(cal.getTime());
            arrCRInt = Long.parseLong(stime);
            try {
                i = 0;
                c = db1.rawQuery("SELECT * FROM " + CRA, null);
                if (c != null) {
                    if (c.moveToFirst()) {
                        do {
                            dbdatetime = c.getString(c.getColumnIndex("rdatetime"));
                            arrDBInt = Long.parseLong(dbdatetime);
                            remName = c.getString(c.getColumnIndex("rname"));
                            rem_id = c.getString(c.getColumnIndex("reminder_id"));
                            alertId=c.getString(c.getColumnIndex("alert"));
                            if (arrDBInt < arrCRInt) {
                                if(alertId.equals("TRUE"))
                                {
                                    ///////////////////// Passing Alert Message to Android Emulator GUI
                                    db1.execSQL("UPDATE "+CRA+" SET "+ALERT+"='FALSE' WHERE reminder_id = " + rem_id );
                                }
                                db1.execSQL("UPDATE "+CRA+" SET "+STATUS+"='TRUE' WHERE "+CRDATETIME+"<"+arrCRInt +" and reminder_id = " + rem_id );
                            }
                            if (arrDBInt == arrCRInt) {
                                ///////////////////// Passing Alert Message to Android Emulator GUI
                                System.out.println("ALERTED AS: You Have " + remName + " Remainder as on this Time");
                                db1.execSQL("UPDATE "+CRA+" SET "+ALERT+"='FALSE' WHERE "+CRDATETIME+"="+arrCRInt +" and reminder_id = " + rem_id );
                            }
                            if(arrDBInt>arrCRInt)
                            {
                                ///////////////////// Passing Alert Message to Android Emulator GUI

/////////////////////ここではアラートボックス、メッセージボックス、トーストなどすべてが機能しません

                            }
                        } while (c.moveToNext());
                    }
                }
                Thread.sleep(10000);
            } catch (Exception e) {
            }
        }
    }
4

2 に答える 2

1
Handler handler = new Handler();
handler.post(new Runnable(){
     public void run(){
          //implement your thread code here
     }
 });
于 2012-09-28T05:02:32.417 に答える
1

AsyncTask を使用することをお勧めします。

public class MyAsyncTask extends AsyncTask<Void, Void, Result>{

         private Activity activity;
         private ProgressDialog progressDialog;

        public MyAsyncTask(Activity activity) {
                        super();
            this.activity = activity;
        }

        @Override
        protected void onPreExecute() {
        super.onPreExecute();
            progressDialog = ProgressDialog.show(activity, "Loading", "Loading", true);
        }

        @Override
        protected Result doInBackground(Void... v) {
        //do your stuff here
        return null;

        }

        @Override
        protected void onPostExecute(Result result) {
            progressDialog.dismiss();
            Toast.makeText(activity.getApplicationContext(), "Finished.", 
                    Toast.LENGTH_LONG).show();
        }


}

アクティビティから呼び出します。

MyAsyncTask task = new AsyncTask(myActivity.this);
task.execute();
于 2012-08-31T10:31:30.280 に答える