1

私はAndroidプログラミングに不慣れで、このフォーラムでおそらく数秒で解決できる課題に直面しています。

起動時にアプリケーションを有効にして、最後の起動から日付が変わったかどうかを検出する方法を見つけようとしています。

日付が変わったら、テキストビューの値を変更するつもりです。ただし、そうでない場合、テキストビューは変更されません。-私はこの関数を作成する方法を知っていますが、日付変更の問題に固執していますか?

alarmmanagerで読んだことがありますが、起動中のみ特定の時間に発生する必要がないため、これが必要かどうかはわかりません。

任意のアドバイスをいただければ幸いです。

ありがとう、

ps基本的な見積もりアプリケーションを作成していて、その日のページの見積もりを含めたいと思います。これを行うには、アプリケーションが見積もりを変更するために日付が変わったかどうかを知る必要があります

4

2 に答える 2

5

必要なのはこれです:最後の日付を表す長い値を持つ
A。 A。_SharedPreference
Calendar

アクティビティが開始されると(onCreate()メソッドではこれに適しているようです)、新しいを取得できますCalendar。現在の日付が表示され、その日を抽出できます。

Calendar c = Calendar.getInstance();
int thisDay = c.get(Calendar.DAY_OF_YEAR); //You can chose something else to compare too, such as DATE..
long todayMillis = c.getTimeInMillis(); //We might need this a bit later.

次に、前回から保存された可能性のある値を読み取り、カレンダーをこの値に設定してから、これを今日と比較します。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
long last = prefs.getLong("date", 0); //If we don't have a saved value, use 0.
c.setTimeInMillis(last);
int lastDay = c.get(Calendar.DAY_OF_YEAR);

if( last==0 || lastDay != thisDay ){
    //New day, update TextView and preference:
    SharedPreferences.Editor edit = prefs.edit();
    edit.putLong("date", todayMillis);
    edit.commit();
}
于 2012-04-12T15:06:38.437 に答える
0

アプリの起動時にこれを行います。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this)

if (prefs.getBoolean("firstLaunch", true))
{
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstLaunch", false);
    editor.putInt("date", new Date().getTime());
    editor.commit();
}
else
{
    if (new Date().getTime() != prefs.getInt("date", 0))
    {
            // Do something
    }
}
于 2012-04-12T15:02:41.510 に答える