2017-10-16 8 views
-4

3 번 실행 후 AltertDialog를 한 번 표시하려면 어떻게해야합니까? 난 단지 응용 프로그램의 첫 시작 (나는 안드로이드 된 SharedPreferences와 초보자입니다)에서 무언가를하는 방법을 알고 :앱이 3 번 실행 된 후 AlertDialog를 표시하십시오.

if (settings.getBoolean("my_first_time", true)) { 
    Log.d("Comments", "First time"); 

    // Action which is done at first launch 
    // save first launch 
    settings.edit().putBoolean("my_first_time", false).commit(); 
} else { 
    //not first time   
} 

감사의 펠릭스

이 작업을 수행하는 가장 간단한 방법은 SharedPreferences을 사용하는 것입니다
+2

지금까지 시도한 것은 무엇입니까? –

+0

저는 초보자이기 때문에 처음 작업에서 sharedpreferences와 한 번만 작업했습니다. – Seilbahn

+0

가 표시 될 때마다 증분하여 sharedpref에 저장하고 – nomag

답변

1

sharedPreferences를 1로 업데이트하고 alertParferences가 3 인 지 확인합니다 (alertDialog를 표시하는 경우).

다음은 대략적인 예입니다.

에서 방법을 추가하십시오.

int appLaunchedFor = getSharedPreferences("app_info", MODE_PRIVATE).getInt("counter", 0); 
if(appLaunchedFor == 3){ 
    //Launch AlertDialog; 

    //Now increament by 1 so that alertDialog will not launch again. 
    getSharedPreferences("app_info", MODE_PRIVATE).edit().putInt("counter", ++appLaunchedFor).commit(); 
}else if (appLaunchedFor < 3){ 
    getSharedPreferences("app_info", MODE_PRIVATE).edit().putInt("counter", ++appLaunchedFor).commit(); 
} 
+0

라인 3의 연산자 ==에 대해 오류가 발생하고 (String, int) 의 SharedPreferences를 라인 1의 (String)에 적용 할 수 없습니다. – Seilbahn

+0

오! 첫 줄에서'String'을'int'로 변경하십시오. –

+0

하지만 int는 문자열에 적용 할 수 없으며 2 행에서 연산자를 적용 할 수 없습니다.당신의 도움을 주셔서 감사합니다! – Seilbahn

0

, 그것은 간단하기 때문에 당신은 이미 당신이 그것을 사용했던 의견에 말했다.

Application 클래스를 서브 클래스 화하고 MyApplication#onCreate() 내부의 카운터를 증가시키고 SharedPreferences에 저장하여이를 수행 할 수 있습니다.

참고 : 이것은 100 % 확실하지 않습니다. 사용자가 앱의 데이터를 지우면 카운터가 사라집니다. 이를 방지하려면 SQLiteRealm과 같은 개인 데이터베이스를 사용할 수 있습니다.

+0

"을 선택하면 [외부 저장소] (https://developer.android.com/guide/topics/data/data-storage.html#filesExternal)에 저장된 데이터를 제외하고 모든 종류의 데이터가 손실됩니다. "개인 데이터베이스"는 개인 저장소가 아닌 외부 저장소에 저장할 수 없기 때문에 지워집니다. – 0X0nosugar

+0

@ 0X0nosugar 잘, 그것은 완전히 정확하지 않습니다. SQLite와 Realm ** 모두 외부 저장소 ([SQLite source] [1], [Realm source] [2])에 저장할 수 있습니다. 이 경우 그는 READ_EXTERNAL_STORAGE 및 WRITE_EXTERNAL_STORAGE 권한이 필요합니다. [1] : https://stackoverflow.com/questions/14373863/how-to-store-sqlite-database-directly-on-sdcard [2] : https://stackoverflow.com/questions/29551664/ how-to-move-my-realm-file-in-sd-card –

+0

UR 응답을 주셔서 감사합니다.하지만 sharedpreferences에서 어떻게 저장해야하는지 잘 모릅니다. 나는 안드로이드의 초보자입니다. – Seilbahn