목록FrontEnd/Android (63)
만족
액티비티 A에서 액티비티 B로 데이터를 넘겨주는 방법중 하나는 Intent에 Object를 넣어서 전달하는 방법이다. 이 방법은 간단하지만 전달하려는 Object의 크기가 일정 이상이 되면 Exception이 발생하거나 느려지고 거쳐가는 액티비티의 갯수가 많은 경우 매우 번거로운 작업이 될 수 있다. 그래서 액티비티간에 object를 전달하지 않고, 새로운 클래스를 만든 다음, 해당 클래스의 static 멤버 변수에 값을 저장하고 필요한 액티비티에서 사용할 수 있도록 해 두었다. public class DataHolder{ private static List strList= null; public static void initStrList(){ List strs= new ArrayList(); strs...
문자 애플리케이션을 열어서 이동시키는것이 아닌, 코드 상에서 사용자의 추가 동작 없이 즉시 SMS를 보내는 방법은 다음과 같다. MMS로 보낼 경우 (장문문자 또는 멀티미디어 포함) 해당 메소드는 동작하지 않는다는 점에 유의하자. 물론 딱 보기에도 악용 가능성이 다분한 기능이기 때문에 매니페스트에 해당 권한을 명시하고, 사용자로부터 권한을 얻어오는 코드를 추가로 삽입해주어야 한다. 권한을 얻는 부분은 생략한다. 매우 간단하고, 빌드도 성공적으로 잘 된다. 그러나... 플레이스토어에 업로드할 경우 사유서를 작성해서 내야 한다 (악용할 경우 유료문자를 폭탄으로 보낸다던지 하는게 가능하기 때문이다) 나의 경우 해당 권한이 필요한 사유를 적어서 냈는데도 거절당했다는 문자가 왔다... 그럼 어떻게 해결하느냐? 간..
https://satisfactoryplace.tistory.com/97 [Android] 개발자 계정 만들기 플레이스토어에 앱을 올리기 위해서는 '구글 개발자 콘솔'에 계정을 등록해야한다. 준비물은 결제카드와 구글 계정이다. 바로 만들어 보자 우선 구글 개발자 콘솔에 들어가자. https://play.google.com/apps/publ.. satisfactoryplace.tistory.com 이 과정을 모두 완료했다면, 이제 다음과 같은 화면이 표시될 것이다. 우측의 '애플리케이션 만들기' 버튼을 클릭하고, 앱 제목을 입력하자. 제목은 추후 변경할 수 있으니, 게임 닉네임 정할 때 처럼 깊게 고민하지 않아도 된다... 이제 대시보드로 잘 넘어왔다면, 좌측 네비게이션에 주목하라. 체킹표시된 아이콘이 모..
플레이스토어에 앱을 올리기 위해서는 '구글 개발자 콘솔'에 계정을 등록해야한다. 준비물은 결제카드와 구글 계정이다. 바로 만들어 보자 우선 구글 개발자 콘솔에 들어가자. https://play.google.com/apps/publish/?hl=ko 불러오는 중입니다... 로그인이 되어있지 않은 상태라면 로그인창이 뜨는데, 로그인해주면 된다. 로그인을 완료하면, 돈을 내라는 창이 뜬다. 25달러가 필요하지만, 우리는 미국인이 아니기 때문에 해외결제 수수료나 환율 등을 고려하면 약 3만원정도 나올 것이다. 충분한 금액이 들어있는 신용/체크카드를 준비하고 '결제 페이지로 이동'을 누르자 입력하고 구매버튼을 누르자 2020-03-19일 기준으로 32,720원이 청구되었다 (달러값 실화인가...) 결제가 성공적으..
ViewPager는 요렇게 생긴 놈이다. 정확히 말하자면 ViewPager를 setAdapter를 이용해 fragment를 집어넣어서 만든다. 그런데, ViewPager는 현재 선택된 Fragment의 상태만 유지하고 나머지는 버린다. 이게 무슨말이냐 하면, SampleFragment의 onCreate에서 "created"라는 토스트 메시지를 띄우게 하고 이 SampleFragment를 페이저에 집어넣으면 페이지가 바뀔 때 마다, "created"라는 메시지가 발생한다. 이게 뭐지? 라는 생각을 할 수도 있지만, 페이저가 있다고 해서 모든 유저가 전체 페이지를 다 사용하는 것도 아닐테고, 일반적으로 이미 사용이 끝난 페이지의 상태를 저장할 필요가 없기 때문에 기본적으로 상태 유지를 하는 페이지의 수는 1..
ListView는 꽤 옛날에 나온 놈이라 호환성이 그렇게 좋지 못하다. 제목에서도 언급했듯이 가장 많이 문제를 일으키는 경우는 ScrollView 내부에 ListView가 존재할 때 이다. 이 경우 ListView의 전체 높이가 ListView의 하나의 목록의 높이로 잡혀서 상당히 괴이한 모양의 컴포넌트를 만들어낸다. 대안은 두 가지가 있다. 첫 번째는 ListView를 버리는 방법이다. 위의 문제를 해결하기 위해서, 그리고 성능 향상을 위해서 ListView대신 RecyclerView를 이용하는 방법이다. 이 방법은 구글에 Android RecyclerView example만 쳐도 수백개의 예제가 나오므로 설명은 생략한다. 이 방법의 단점은 매우 번거롭다는 것이다. Adapter를 갈아엎는 수준으로 만..
ScrollView를 사용해서 스크롤을 구현하고 스크롤의 시작지점이나 끝지점에 hit했을 때, 저런 물결무늬가 나오는데 UI구성에 따라서 저게 상당히 흉해 보일 때가 있다. 이걸 뭐라고 불러야 하는지도 모르겠어서 검색하기도 꽤 난감했었는데 이 effect는 overScroll 할 때 발생한다고 한다. overScroll은 눈치챘겠지만, 끝이나 시작지점에 닿았음에도 같은 방향으로 계속해서 스크롤을 시도할 때를 말한다. 단순히 ScrollView의 옵션에 overScroll= "never" 하면 사라진다.
일단, fragmentTransaction단에서 커밋조차 실패한 경우에는 논외로 한다. xml에서 인플레이션했던, transaction으로 commit했던 간에, getFragmentManager().findFragmentById() 혹은 getFragmentManager().findFragmentByTag()를 분명 일치하게 입력했는데도 null을 return 하는 경우가 있다. Fragment코드를 생성할 때, Fragment클래스를 auto import하면 (alt+enter를 이용한 경우도 마찬가지) import android.support.v4.app.Fragment; 가 자동으로 import된다. 그런데, getFragmentManager().findFragmentById() 는 (getFra..