반응형


이번 포스팅은 Android Build 오류에 대하여 알아보도록 하겠습니다.

Kotlin에서 데이터를 List 형태로 받아올 때 아래와 같은 오류가 발생하였습니다.


< Error> 

java.lang.ClassCastException: java.util.Collections$UnmodifiableRandomAccessList cannot be cast to java.util.ArrayList


< Solution > 


▶ ArrayList를 Collection으로 변환하는 방법

ArrayList<User> usersArrayList = new ArrayList<User>();

Collection<User> userCollection = new HashSet<User>(usersArrayList);


▶ Collection을 ArrayList로 변환하는 방법

Collection<User> userCollection = new HashSet<User>(usersArrayList);

List<User> userList = new ArrayList<User>(userCollection );


반응형
반응형


이번 포스팅은 Android Build 오류에 대하여 알아보도록 하겠습니다.

Intent 형태로 데이터를 전달받을 시 아래와 같은 오류가 발생하였습니다.


< Error >

java.net.URISyntaxException: Illegal character in query at index 50: androidData://androidScheme?requestCode=8&userAgent=function trim() { [native code] }&data=VEMgU2FtcGxlIFRleHQg7JuQ66y4IOuplOyLnOyngOyeheuLiOuLpC4=

     W/System.err:     at java.net.URI$Parser.fail(URI.java:2892)

     W/System.err:     at java.net.URI$Parser.checkChars(URI.java:3065)

     W/System.err:     at java.net.URI$Parser.parseHierarchical(URI.java:3155)W/System.err:     at java.net.URI$Parser.parse(URI.java:3097)

     W/System.err:     at java.net.URI.<init>(URI.java:583)

     W/System.err:     at com.android.sample.h2a.shared.UniScheme.getA2UAllParams(UniScheme.java:58)

     W/System.err:     at com.android.sample.h2a.shared.HybridAdapter.callUnisignByUri(HybridAdapter.java:74)

     W/System.err:     at com.android.sample.h2a.MainActivity$UniSignWebViewClient.shouldOverrideUrlLoading(MainActivity.java:119)

     W/System.err:     at android.webkit.WebViewClient.shouldOverrideUrlLoading(WebViewClient.java:77)

     W/System.err:     at aLy.a(PG:1)

     W/System.err:     at sV.a(PG:21)

     W/System.err:     at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(PG:160)

     W/System.err:     at android.os.MessageQueue.nativePollOnce(Native Method)

 W/System.err:     at android.os.MessageQueue.next(MessageQueue.java:326)

 W/System.err:     at android.os.Looper.loop(Looper.java:181)

 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7037)

 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)

 W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)

 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)


< Solution > 

Intent 로 데이터를 전달받을 시 공백이 문제가 되어 오류가 발생하였습니다.

전달받은 데이터를 Base64 인코딩하여 전달을 받거나 아래와 같이 변경하여 전달받으실 수 있습니다.

url.replaceAll(" " , "%20");

반응형
반응형


이번 포스팅은 Fragment를 좀 더 유연하게 구축하는 방법에 대하여 알아보도록 하겠습니다.


다양한 화면 크기를 지원하도록 애플리케이션을 설계할 때 다양한 레이아웃 구성에서 Fragment를 다시 사용하여 사용 가능한 화면 공간을 기준으로 사용자 환경을 최적화할 수 있습니다.

예를 들어 핸드셋 기기인 경우 단일 창 사용자 인터페이스에 Fragment를 한 번에 하나씩만 표시하는 것이 적합할 수 있습니다. 반대로, 화면 너비가 큰 태블릿에서는 Fragment를 나란히 설정하여 사용자에게 더 많은 정보를 표시할 수 있습니다.

이 FragmentManager 클래스는 동적 경험(dynamic experience)을 만들기 위해 런타임시 Activity에 Fragment를 추가, 제거 및 대체 할 수있는 메소드를 제공합니다.

Fragment 구현에 관한 자세한 정보는 다음 리소스를 참조하세요.


Runtime 시 Activity에 Fragment 추가


<fragment> 요소를 사용하는 이전 과정의 내용대로 레이아웃 파일의 Activity에 대한 Fragment를  정의하는 대신 Activity Runtime 중 Activity에 Fragment를 추가할 수 있습니다. Activity 사용 기간 중 Fragment를 변경하려는 경우에는 이 과정이 필요합니다.

프래그먼트 추가 또는 삭제와 같은 트랜잭션을 수행하려면 FragmentManager를 사용하여 기타 Fragment 트랜잭션을 추가, 삭제, 교체, 수행하기 위한 API를 제공하는 FragmentTransaction를 만들어야 합니다.

Activity에서 Fragment를 삭제하거나 교체할 수 있는 경우 Activity의 onCreate() 메서드 중에 Activity의 초기 Fragment를 추가해야 합니다.

Fragment 작업 시, 특히 런타임에 Fragment를 추가할 때 유념해야 할 중요한 규칙은 Fragment를 삽입할 수 있는 컨테이너 View를 Activity 레이아웃에 포함해야 하는 것입니다.

이전 과정에 나와 있는 대로 Fragment를 한 번에 하나씩만 표시하는 레이아웃 대신 다음 레이아웃을 사용할 수 있습니다. 한 Fragment 를 다른 Fragment 로 교체할 수 있도록 Activity 레이아웃에는 Fragment  컨테이너 역할을 하는 빈 FrameLayout이 포함되어 있습니다.

파일 이름은 이전 과정의 레이아웃 파일과 동일하지만, 레이아웃 디렉터리에 large 한정자가 없기 때문에, 이 레이아웃은 기기 화면이 대형보다 작아 두 Fragment 를 동시에 표시할 수 없는 경우에 사용됩니다.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
       
android:id="@+id/fragment_container"
       
android:layout_width="match_parent"
       
android:layout_height="match_parent" />



Reference

1. https://developer.android.com/training/basics/fragments/fragment-ui

반응형

'Development > Android' 카테고리의 다른 글

[Android] Touch 이벤트 순서  (0) 2019.09.10
[Android] Intent Filter  (0) 2019.09.10
[Android] App Fragment Test  (0) 2019.09.06
[Android] Fragment의 생성  (0) 2019.09.06
[Android] Fragment의 개요  (0) 2019.09.06

+ Recent posts