ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] '오늘 하루 그만 보기' 구현
    안드로이드 | Android/잡기장 | Notebook 2017. 2. 9. 13:22

    AlertDialog에서 '오늘 하루 그만 보기'를 구현하여 정리하였습니다.

     

    SharedPreferences를 이용하였습니다.

     

    코드를 확인해보고, 이용할 부분을 사용하시면 됩니다.

     

    package com.example.preferencestest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.preference.PreferenceManager;
    import android.util.Log;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class MainActivity extends AppCompatActivity {
    
        // Debug tag, for logging
        static final String TAG = "Main";
    
        // SharedPreferences 정의
        private SharedPreferences SPreferences;
    
        // SharedPreferences 접근 이름, 저장 데이터 초기화
        private final String NameSPreferences = "Day";
        private String strSDFormatDay = "0";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // '오늘 그만 보기' 기능을 위한 날짜 획득
            long CurrentTime = System.currentTimeMillis(); // 현재 시간을 msec 단위로 얻음
            Date TodayDate = new Date(CurrentTime); // 현재 시간 Date 변수에 저장
            SimpleDateFormat SDFormat = new SimpleDateFormat("dd");
            strSDFormatDay = SDFormat.format(TodayDate); // 'dd' 형태로 포맷 변경
    
            // SharedPreferences 획득
            SPreferences = PreferenceManager.getDefaultSharedPreferences(this);
            String strSPreferencesDay = SPreferences.getString(NameSPreferences, "0");
    
            // 공지사항 알림창 띄움
            if((Integer.parseInt(strSDFormatDay) - Integer.parseInt(strSPreferencesDay)) != 0)
                StartMainAlertDialog();
        }
    
        // 초기 실행시 도움말로 유도하는 알림창
        public void StartMainAlertDialog() {
            // Dialog Message 설정
            String strMessage = "공지사항 샘플입니다.";
    
            // AlertDialog 정의
            AlertDialog.Builder MainAlertDialog = new AlertDialog.Builder(MainActivity.this);
            MainAlertDialog.setTitle("공지사항"); // Title 설정
            MainAlertDialog.setIcon(android.R.drawable.ic_dialog_info); // Icon 설정
            MainAlertDialog.setMessage(strMessage); // 메시지 설정
    
            // positive 버튼 설정
            MainAlertDialog.setPositiveButton("취소", new DialogInterface.OnClickListener() {
                // Positive Button에 대한 클릭 이벤트 처리를 구현
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.d(TAG, "Close the dialog");
                    dialog.dismiss(); // dialog 닫기
                }
            });
    
            // Negative 버튼 설정
            MainAlertDialog.setNegativeButton("이동", new DialogInterface.OnClickListener() {
                // Negative Button에 대한 클릭 이벤트 처리를 구현
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    /*
                     작업 예시) Intent InformationIntent = new Intent(Main.this, Information.class);
                     startActivity(InformationIntent);
                    */
                    Log.d(TAG, "Move to activity");
                    dialog.dismiss(); // dialog 닫기
                }
            });
    
            // Neutral 버튼 설정
            MainAlertDialog.setNeutralButton("오늘 그만 보기", new DialogInterface.OnClickListener() {
                // Neutral Button에 대한 클릭 이벤트 처리를 구현
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    SharedPreferences.Editor SPreferencesEditor = SPreferences.edit();
                    SPreferencesEditor.putString(NameSPreferences, strSDFormatDay); // 오늘 '일(day)' 저장
                    SPreferencesEditor.commit(); // important to save the preference
                    Log.d(TAG, "Close for a day");
                    dialog.dismiss(); // dialog 닫기
    
                }
            });
    
            // AlertDialog 화면 출력
            MainAlertDialog.show();
        }
    }

    댓글

Designed by Tistory.