Property type 'CustomWindow *' is incompatible with type 'UIWindow * _Nullable' inherited from 'UIWindowSceneDelegate' 위 워닝은 AppDelegate는 Objective-C코드로 되어있고 CustomWindow는 Swift코드로 되어있을 때 나타나고 있습니다. 문제 상황 앱의 최상단에 뷰를 띄우기 위해 UIWindow에 뷰를 붙여서 사용하고 있었습니다. 그러나 window의 rootViewController를 바꾸게 되면 최상단에 붙어있던 뷰가 rootViewController 밑으로 들어가면서 사용자가 볼 수 없었죠. 이 문제를 해결하기 위해 rootViewController를 바꿀 때 마다 붙어있던 뷰를 b..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/6CX8z/btqvTftBvXY/QHpgOLSo64cMBkkLtABF90/img.png)
Alfred의 Eggtimer는 간편하게 알람과 알림 기능을 이용할 수 있습니다 예를 들어 '20분만 유투브를 보고 일해야겠다'고 생각했다면 20분 알림을 설정하면 됩니다 몇 글자 입력만으로 Reminder가 설정됩니다 시간이 다 지난 후에 다시 알림이 나타납니다 Alfred 3에서 Alfred2 기준으로 배포된 Eggtimer를 이용하기 위해서 약간의 파일 수정이 필요했습니다 마찬가지로 이번에 새로 업데이트된 Alfred4에서도 똑같은 방법으로 파일을 수정하면 될 것이라 판단했지만 4버전에서는 이전과는 다른게 폴더명이 Alfred 4가 아닌 숫자가 없는 상태의 Alfred로 저장되있는 것을 볼 수 있었습니다 지금부터 Alfred4에서 Eggtimer를 이용하는 방법을 알려드리겠습니다 Eggtimer2 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m50Em/btqu1urqF5Y/VUgX3f10lSPwzj0rj9k8W1/img.png)
Spinner를 사용하려고 어댑터까지 연결했지만 Spinner에 연결된 ArrayList의 목록들이 보이기만 하고 선택이 되지 않았다 이렇게 Spinner에 정상적으로 ArrayList의 값이 나오지만 선택을 하면 어떤 반응도 없다 이 문제는 Spinner에 어댑터를 연결할 때 리스트가 비어있는 상태여서 생긴 문제이다 따라서 ArrayList에 변동사항이 생겼다면 어댑터에 변동을 알리기만 하면 해결되는 문제였다 adapter.notifyDataSetChanged(); 리스트에 원소를 추가한 후 위의 코드 한 줄만 실행하면 정상적으로 Spinner의 값이 선택된다
안드로이드 프로그래밍을 하다보면 startActivity(intent)로 액티비티 전환을 할 때가 있다 여기서 뒤로가기를 누르면 이전 액티비티로 돌아가게 되는데 이러한 동작을 막기 위해 뒤로가기 액티비티를 없애고 싶을 때가 있다 이를 manifest에서 지정하는 방법이 있지만 주로 사용하는 방법은 intent에 플래그를 지정하는 방법이다 Intent intent = new Intent(this, NextActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); CLEAR_TASK와 NEW_TASK 플래그오 인해 액티비티..
xml로 레이아웃을 구성하면 쉽고 눈에 잘 확인할 수 있는 장점이 있다 다만 고정적으로 필요한 요소들만 만들어두어야 한다 그렇다면 필요에 의해 만들어야 하는 요소들은 자바 코드로 프로그래밍 해야 한다 LinearLayout linearLayout = new LinearLayout(getContext()); linearLayout.serOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTNETN); button.setLayoutPa..
액티비티에서 특정 작업을 수행한 후에 프래그먼트를 생성하기를 원할 때가 있다 하지만 레이아웃에서 프래그먼트의 id를 지정하기 때문에 바로 프래그먼트를 만든다 이렇게 되면 프래그먼트에 null 값이 전달되어 오류로 인한 강제종료 문제가 발생할 수 있다 이 문제는 간단하게 해결이 가능하다 액티비티에서 Fragment를 바로 만들도록 레이아웃에서 Fragment를 넣을 것이 아니라 FrameLayout을 넣으면 해결된다 android:name="com.example.application.MyFragment"를 통해 프래그먼트의 onCreateView() 함수를 호출하기 때문에 생기는 문제이다 FrameLayout으로 수정하면 프래그먼트의 onCreateView()를 호출하지 않기 때문에 문제가 생기지 않는다 ..
파이어베이스의 Timestamp는 연도는 1900년을 기준으로 누적된 값을 이용하고 월은 0 ~ 11의 값을 이용한다 따라서 Timestamp를 이용한 쿼리 작성은 연도에서 1900을 뺀 값을 이용해야 한다 public void searchData(int year, int month, int dayOfMonth) { db.collection("books") .whereLessThan("timestamp", new Timestamp(new Date(year - 1900, month, dayOfMonth + 1))) .whereGreaterThanOrEqualTo("timestamp", new Timestamp(new Date(year - 1900, month, dayOfMonth))) .get() .add..
액티비티에서 프래그먼트를 생성할 때 값을 전달해야 할 때가 있다 간단하게 생성자를 이용해서 전달하려고 했지만 안드로이드에서 이러한 방식이 지원되지 않는다 따라서 Bundle 객체를 이용해서 전달하는 방법을 이용한다 MyFragment myFragment = new MyFragment(); Bundle bundle = new bundle(1); // 파라미터의 숫자는 전달하려는 값의 갯수 bundle.putString("key", "value"); myFragment.setArgument(bundle); 이와 같이 코드를 입력하면 액티비티에서 프래그먼트로 값이 전달된다 이 값을 이용하기 위해서 프래그먼트에선 간단한 코드 한 줄로 얻어낼 수 있다 String str; Bundle bundle = getArg..
안드로이드 어플에서 비밀번호를 관리해야 할 일이 있어 해싱 함수를 적용했다 java에서도 같은 방식으로 이용할 수 있다 public String hashing(String str) { String result; try { MessageDigest sh = MessageDigest.getInstance("SHA-256"); sh.update(str.getBytes()); byte byteData[] = sh.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString(byteData[i] & 0xff + 0x100, 16).substring(1)); } r..
- Total
- Today
- Yesterday
- layout
- 안드로이드
- 스튜디오
- calendarView
- android
- 액티비티
- 안드로이드 여백
- 파이어베이스
- RecyclerView padding
- RecyclerView Swipe
- 안드로이드 레이아웃
- Alfred
- eggtimer
- 뒤로가기
- androidx
- intent
- 에그타이머
- Android Studio
- 레이아웃
- wrap_content
- recyclrView
- 프래그먼트
- Firebase
- firestore
- RecyclerView 여백
- 파이어스토어
- round border
- 안드로이드 스튜디오
- java
- activity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |