2017-12-08 1 views
0

사용자가 앱을 여는 횟수를 보여주는 일종의 줄무늬 기능을 구현하고 싶습니다. 카운터가 하루에 하나씩 증가하고 싶습니다. 사용자가 하루를 건너 뛰어야하는 경우, 아래의 코드를 사용하여 응용 프로그램이 열립니다 "높은 점수"의 일종으로 카운터를 저장하고줄무늬 기능을 구현하는 방법

지금까지 내가 횟수를 계산 할 수 있었다 카운터를 다시 시작합니다

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

해결책으로 표시하기 위해 틱을 클릭합니다.이 시도를 했으므로 카운터가 지난 1 회도지나 가지 않습니다. –

관련 문제