본문 바로가기

프로그래밍88

[java] @Override 메소드 오버라이딩에 대한 이해 개요 메소드 오버라이딩은, 부모 클래스에서 정의된 메소드를 재정의하는 것입니다. 기본 어노테이션 @Override 를 선언하여 기존 클래스의 동일한 메소드를 재정의함을 명시합니다. 아래 소스 코드는 클래스 A를 상속받는 클래스 B에서 메소드 hello()를 오버라이딩했습니다. 클래스 A에서 정의한 hello()가 아닌 클래스 B에서 정의한 hello()가 실행되었습니다. ▶ 소스 코드 class A { public void hello() { System.out.println("Hello, A"); } } class B extends A { @Override public void hello() { System.out.println("Hello, B"); } } class HelloWorld { public.. 2024. 1. 13.
[flutter] BuildContext 그리고 ScaffoldState.of() 에 대한 이해 BuildContext 위젯 트리 내 위젯의 위치 정보를 가지는 클래스입니다. StatelessWidget.build 또는 State 객체(주로 StatefulWidget과 같이 활용되는)에서 사용가능한 메소드들을 제공합니다. StatelessWidget.build 아래 코드와 같이 StatelessWidget.build 메소드를 사용였습니다. build 메소드 하위 블록 {} 에서 context 를 이용한 작업 수행이 가능합니다. import 'package:flutter/material.dart'; void main() => runApp(const ExampleApp()); class ExampleApp extends StatelessWidget { const ExampleApp({super.key}.. 2024. 1. 6.
[flutter] android minSdkVersion 변경하기 (flutter sdk 3.13) 또 달라졌습니다... 버전 변경 프로젝트에 사용하는 flutter sdk 디렉토리/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy 에 있습니다. /** * For apps only. Provides the flutter extension used in app/build.gradle. * * The versions specified here should match the values in * packages/flutter_tools/lib/src/android/gradle_utils.dart, so when bumping, * make sure to update the versions specified there. * * Learn more ab.. 2024. 1. 3.
[python] Firebase Admin SDK child path 활용 데이터 읽기 개요 python firebase admin sdk를 활용하여 실시간데이터베이스에서 데이터를 읽는 방법과 path를 작성하는 방법입니다. 가정 다음과 같이 데이터가 저장되어 있다고 가정합니다. - fruit : - apple : - price : "100" - size : "3" - banana : - price : "200" - size : "92" - orange : - price : "600" - people : - amy - james 기본 설정 python 스크립트에서 아래와 같이 작성합니다. import firebase_admin from firebase_admin import credentials from firebase_admin import db cred = credentials.Cert.. 2024. 1. 2.
[android] BottomNavigationView 아이템 클릭 시 shift mode 애니메이션 비활성화하기 문제 BottomNavigationView의 아이템 선택 시 아이콘과 라벨이 동시에 커지는 애니메이션이 기본값으로 설정되어 있습니다. 이 애니메이션 효과(Shift mode)를 제거해 보겠습니다. 해결 방법 이 문제를 해결하기 위해 빌드 시 강제로 dimens.xml에 지정된 값(12sp)을 오버라이드하도록 만들어야 합니다. res/drawable/values/dimens.xml 에 아래 코드를 추가해 주세요. 12sp 바텀네비게이션 레아아웃에 아래 코드를 추가해 주세요. xmlns:tools="http://schemas.android.com/tools" tools:override="true" 애니메이션 효과가 사라졌습니다. 참고 자료 해당 이슈에서 해결 방법을 찾았습니다. Google Issue Tra.. 2024. 1. 2.
[Flutter] URI.https type 'int' is not a subtype of type 'Iterable<dynamic>' 에러 해결 문제 상황 URI.https 인스턴스의 속성을 정의할 때, 파라미터 value 값에 int 자료형이 들어가는 경우 발생할 수 있습니다. ▶ #0 예제 코드 int number = 3; final Uri uri = Uri.https(APU_AUTHORITY, API_PATH, { "number": number, "count": 1, }); 해결 방안 파라미터 내 모든 value 를 String 자료형으로 만들어 줍니다. ▶ #1 수정된 예제 코드 int number = 3; final Uri uri = Uri.https(APU_AUTHORITY, API_PATH, { "number": number.toString(), "count": "1", }); 원인 Uri.https의 원형은 아래와 같습니다. 팩토리.. 2023. 12. 17.
[Flutter] bottomNavigationBar svg 커스텀 아이콘 selectedIconTheme 적용하기 개요 bottomNavigationBar 객체 속성 중 selectedIconTheme를 선언하여 선택된 아이콘에 대한 색상 등을 설정할 수 있습니다. 그러나 이는 플러터 Icon 객체에 한해서 적용됩니다. 만약 svg 파일을 아이콘으로 사용하고 있는 경우 적용되지 않습니다. svg 파일을 사용하여 커스텀 아이콘이 selectedIconTheme 설정에 적용되기 위한 방법을 안내합니다. svg 파일 변경 아래 사이트에서 svg파일을 업로드하여 아이콘 형식에 적합한 형태로 만들어 줍니다. FlutterIcon - Flutter custom icons generator This site will not work if cookies are completely disabled. {"assets_hash":"e6.. 2023. 12. 16.
[SAP/ABAP] EVENT DATA_CHANGED 활용하여 ALV 체크박스(checkbox) 클릭 시 바로 반영하기 개요cl_gui_alv_grid 에서 필드 카탈로그를 통해 설정한 체크박스는 체크 후 새로고침해야 인터널 테이블에 해당 체크 값('X')이 저장됩니다. (새로고침 없이 체크박스 체크만 할 경우 인터널 테이블에 반영되지 않음)이는 매우 불편하므로 DATA_CHANGED 이벤트를 통해 체크 시 바로 인터널 테이블에 반영되도록 만들어 보겠습니다. 전제아래 구현 예제는 다음과 같이 전제합니다.alv를 구현하기 위해 필요한 일반적인 코드가 구현되어 있다. (아래 구현 예제는 이러한 코드가 모두 구현된 후에 추가해야 하는 코드만 서술합니다)변수 ZCHECKBOX는 구조체 안에 TYPE C LENGTH 1 데이터 타입으로 선언되어 있다.필드 카탈로그 내 ZCHECKBOX의 EDIT에는 'X' 값이 저장되어 있다. 사.. 2023. 12. 14.
[android/메모] 안드로이드 개발 시 필요한 참고 자료 모음 개인적으로 자주 열람하는 자료입니다. 소스 코드 공식 Google Issue Tracker issuetracker.google.com Kotlin 스타일 가이드 | Android Developers Kotlin 스타일 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 문서에서는 Kotlin 프로그래밍 언어의 소스 코드와 관련된 Google의 Android 코딩 표준을 developer.android.com Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Pr.. 2023. 12. 11.
[android] intent ACTION_OPEN_DOCUMENT 사용 시 EXTRA_INITIAL_URI 활용하여 특정 디렉토리 열기 개요 안드로이드 버전마다 저장소 위치가 상이할 수 있습니다. 저는 안드로이드 13, S21 (SM-G991N)에서 구동하였습니다. 참고해 주세요. EXTRA_INITIAL_URI 을 활용하여 파일 관리자가 특정 디렉토리를 열도록 만들어 보겠습니다. 주의 사항 intent에 인코딩된 Uri을 전달해 주어야 합니다. Uri에서 path 단은 반드시 인코딩(예: / -> %2F)된 문자열로 구성되어 있어야 합니다. // BAD Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:Pictures/"); // GOOD Uri uri = Uri.parse("content://com.android.externalst.. 2023. 12. 8.
[android] firebase com.google.android.gms.common.api.ApiException: 10: 에러 해결 개요 안드로이드에서 파이어베이스 기능 구현 시 발생할 수 있는 문제입니다. 다양한 상황에서 발생할 수 있으므로 다른 글들 또한 확인하세요. com.google.android.gms.common.api.ApiException: 10: 올바른 "웹" 클라이언트 ID 확인 안드로이드 프로젝트임에도 Oauth 웹 클라이언트 ID 를 사용해야 합니다. 저의 경우 android Oauth 클라이언트 ID를 사용하고 있었습니다. 해당 프로젝트의 자동 생성되는 웹앱 Oauth 클라이언트 ID를 사용해야 합니다.. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getSt.. 2023. 11. 23.
[android] Could not find method kapt() for arguments 에러 해결 (Room 사용 시) 개요 Room은 안드로이드에서 SQLite를 손쉽게 사용하게 만드는 미들웨어입니다. Room을 가이드에 따라 진행 시 다음과 같은 에러를 접할 수 있습니다. Could not find method kapt() for arguments 해결 방법 kapt를 모두 annotationProcessor으로 바꾸어 주세요. 바꾸기 전 def room_version = "2.5.0" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx... 2023. 11. 22.