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()를 호출하지 않기 때문에 문제가 생기지 않는다 ..
안드로이드 어플에서 비밀번호를 관리해야 할 일이 있어 해싱 함수를 적용했다 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..
파이어베이스의 컬렉션에 임의의 이름을 가진 문서를 추가하려고 한다 처음에는 별도의 추가 함수가 존재할 것이라 생각했지만 파이어베이스 도큐먼트에서 확인해보니 문서를 추가하면 자동으로 컬렉션이 만들어진다고 한다 Map data = new HashMap(); db.collection("books") .add(data) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(DocumentReference documentReference) { } }); 위의 코드를 살펴보면 "books" 컬렉션에 data 문서를 추가하게 된다 "books" 컬렉션이 존재하고 있다면 그 안에 문서를 추가하겠지만 컬렉션이 존재하지 않는 상태라면..
파이어베이스의 FireStore를 사용하다보면 쿼리 검색의 결과를 Query로 돌려준다 Query에서 원하는 필드의 값을 얻는 방법은 의외로 간단하다 db.collection("books").document(group).collection("contents") .whereLessThan("timestamp", new Timestamp(new Date(year - 1900, month, 0))) .whereGreaterThanOrEqualTo("timestamp", new Timestamp(new Date(year - 1900, month - 1, 0))) .get() .addOnSuccessListener(new OnSuccessListener() { @Override public void onSucce..
안드로이드에서 기본적으로 지원하는 CalendarView의 날짜를 선택했을 때 리스너를 구현할 수 있다 calendarView = (CalendarView) view.findViewById(R.id.calendarView); calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { // todo } }); 위의 코드에서 todo 부분에 날짜 선택 시 원하는 동작을 프로그래밍하면 된다 onSelectedDayChange() 함수에 ..
- Total
- Today
- Yesterday
- eggtimer
- 안드로이드 레이아웃
- firestore
- Alfred
- 안드로이드 여백
- android
- 파이어스토어
- androidx
- layout
- 스튜디오
- calendarView
- Android Studio
- 에그타이머
- 안드로이드
- RecyclerView padding
- 레이아웃
- round border
- 파이어베이스
- wrap_content
- java
- 프래그먼트
- intent
- RecyclerView Swipe
- 액티비티
- Firebase
- RecyclerView 여백
- 안드로이드 스튜디오
- 뒤로가기
- recyclrView
- 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 | 29 | 30 |