2017-12-08 23 views
0

ユーザーがアプリを開いた回数のカウントを示す一種のストリーク機能を実装したいと考えています。私は1日1回カウンターを増やしたいと思います。ユーザーが日をスキップする必要がある場合は、下記のコードを使用して、アプリが開かれ、「ハイスコア」の一種として、カウンタを保存し、ストリーク機能の実装方法

は、これまでのところ、私は回数をカウントすることができたカウンターを再起動します。

if (savedInstanceState == null) { 
     //initialize streak counter 
     SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 

     streakCount = prefs.getInt("counter", 0); 
     streakCount++; 
     editor.putInt("counter", streakCount); 
     editor.apply(); 
     Toast.makeText(this, "App Opened Count is: " + streakCount, Toast.LENGTH_SHORT) 
       .show(); 
    } 

これを実装する方法についてのご意見は高く評価されます。

+0

strekcountが文字列であるサンプルとしてこれを使用? –

+0

あなたが日をスキップしてカウンタを再起動するかどうかを確認するには、日時ライブラリを追加する必要があります。 –

+0

@WaleedAsim intです –

答えて

1

だけ

SharedPreferences sharedPreferences = getSharedPreferences("YOUR PREF KEY", Context.MODE_PRIVATE); 
Calendar c = Calendar.getInstance(); 

     int thisDay = c.get(Calendar.DAY_OF_YEAR); // GET THE CURRENT DAY OF THE YEAR 

     int lastDay = sharedPreferences.getInt("YOUR DATE PREF KEY", 0); //If we don't have a saved value, use 0. 

     int counterOfConsecutiveDays = sharedPreferences.getInt("YOUR COUNTER PREF KEY", 0); //If we don't have a saved value, use 0. 

if(lastDay == thisDay -1){ 
    // CONSECUTIVE DAYS 
    counterOfConsecutiveDays = counterOfConsecutiveDays + 1; 

    sharedPreferences.edit.putInt("YOUR DATE PREF KEY", thisDay); 

    sharedPreferences.edit.putInt("YOUR COUNTER PREF KEY", counterOfConsecutiveDays).commit; 
} else { 

    sharedPreferences.edit.putInt("YOUR DATE PREF KEY", thisDay); 

    sharedPreferences.edit.putInt("YOUR COUNTER PREF KEY", 1).commit(); 
} 
+0

ありがとう@WaleedAsim私はこれを行って、あなたに戻ってきます。 –

+0

@EricWあなたの問題を解決したら、解決策としてマークをクリックしてください –

+0

私はこれを試してみました。 –

関連する問題